python爬虫——基础知识

简介: python爬虫——基础知识

python爬虫——基础知识

Python高级——爬虫
专栏收录该内容
3 篇文章0 订阅
订阅专栏
python爬虫——基础知识
一、网页基础知识
二、爬虫的思路
1、HTML文档(超文本)
三、ROBOTS协议
四、浏览器发送HTTP请求的过程
1、http请求过程
2、请求
五、SSL连接错误
六、HTML标签层级结构
七、选择器
八、会话Cookies
九、代理的基本原理
代理:实现IP 伪装,反反爬虫
一、网页基础知识
在编写爬虫程序之前首先要了解一些必要的网页知识

二、爬虫的思路
提取数据来源:
HTML文档
josn 数据
1、HTML文档(超文本)
每一份网页都是一份HTML文档,是一种文本标记语言
由一系列标签组成:(如图)
我们要爬取的内容大部分都是便签里的 .text文本

常规操作

  • 1、打开一个网页,即通过了Http协议,对一个资源进行了请求,返还一份HTML文档
  • 2、浏览器 进行文档的渲染,形成一个网页
  • 3、模拟浏览器,发送一份请求,获取文档,提取需要的数据(爬虫要做的)

通用爬虫、聚焦爬虫工作流程:

三、ROBOTS协议
Robots协议:网站通过Robots协议告诉 搜索引擎 哪些页面可以抓取,那些页面不可以抓取
例如:http://www.tobo.com/tobots.txt(淘宝网的Robots协议文档)
看一下这个协议的内容:

限制百度引擎下的爬虫爬取淘宝网的全部内容

这个是通过反爬虫策略实现的,
对于反爬虫策略,我们也有 反反爬虫策略,搞他!

四、浏览器发送HTTP请求的过程
http 超文本传输协议
https 用SSL层加密的超文本传输协议

浏览器渲染出来的页面 和 爬虫请求的页面并不一样

1、http请求过程
比如:https://www.baidu.com/,用Chrome 浏览器的开发者模式下的Network 监听组件来做下演示,它可以显示访问当前请求网页时发生的所有网络请求和响应。

打开Chrome 浏览器,输入链接https://www.baidu.com/
右击并选择“检查”项,即可打开浏览器的开发者工具,结果如下图所示

第一列Name :请求的名称,一般会将URL 的最后一部分内容当作名称。
第二Status :响应的状态码,这里显示为200 ,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应。
第二Status :响应的状态码,这里显示为200 ,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应。
第三列Type :请求的文梢类型。这里为document ,代表我们这次请求的是一个HTML 文档,内容就是一些HTML 代码。
第四列Initiator :请求源。用来标记请求是由哪个对象或进程发起的。
第五列Size :从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示from cache 。
第六列Time :发起请求到获取响应所用的总时间。
第七列Waterfall:网络请求的可视化瀑布流。
2、请求
在爬取数据的时候要模拟浏览器请求,那么就要创建一个请求
请求:由客户端向服务端发出,可以分为4 部分内容:请求方法(Request Method )、请求的网址( Request URL )、请求头(Request Headers )、请求体(Request Body )

请求方法(Request Method )
常见的请求方法有两种:GET 和POST 。
在浏览器中直接输入URL 并回车,这便发起了一个GET 请求,请求的参数会直接包含到URL里
例如,在百度中搜索Python ,这就是一个GET 请求,链接为https://www.baidu.corn/s?wd= Python ,其中URL 中问号后面为请求的参数信息,这里参数wd表示要搜寻的关键字。
POST 请求大多在表单提交时发起。比如,对于一个登录表单,输入用户名和密码后,点击“登录”按钮,这通常会发起一个POST请求,其数据通常以表单的形式传输,而不会体现在URL 中。
GET 和POST 请求方法有如下区别

GET 请求中的参数包含在URL 里面,数据可以在URL 中看到,而POST 请求的URL 不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中
GET 请求提交的数据最多只有1024 字节,而POST 方式没有限制。
一般来说,登录时,需要提交用户名和密码,其中包含了敏感信息,使用GET 方式请求的话,密码就会暴露在URL 里面,造成密码泄露,所以这里最好以POST 方式发送。

上传文件时,由于文件内容比较大,也会选用POST 方式。

请求的网址( Request URL )
请求的网址,即统一资惊定位符URL ,它可以唯一确定我们想请求的资源。
请求头(Request Headers )
请求头是请求的重要组成部分,在写爬虫时,大部分情况下都需要设定请求头。
请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie 、Referer 、User-Agent 等。下面简要说明一些常用的头信息。
Accept :请求报头域,用于指定客户端可接受哪些类型的信息。
Accept-Language :指定客户端可接受的语言类型。
Accept-Encoding :指定客户端可接受的内容编码。
Host :用于指定请求资源的主机IP 和端口号,其内容为请求URL 的原始服务器或网关的位置。从HTTP 1. l 版本开始,请求必须包含此内容。
Referer :此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计、防盗链处理等。
User-Agent :简称UA ,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别为爬虫。
Content-Type :也叫互联网媒体类型(Internet Media Type )或者MIME 类型,在HTTP 协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html 代表HTML 格式,image/gif代表GIF 图片,app lication/json 代表JSON 类型,更多对应关系可以查看此对照表:http://tool.oschina.neνcommons
在爬虫中,如果要构造POST 请求,需要使用正确的Content-Type ,并了解各种请求库的各个参数设置时使用的是哪种Content-Type ,不然可能会导致POST 提交后无法正常响应。
Cookie :也常用复数形式Cookies ,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。
例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies 的功劳。Cookies 里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上Cookies 并将其发送给服务器,服务器通过Cookies 识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。*
请求体
请求体-般承载的内容是POST 请求中的表单数据,而对于GET 请求,请求体则为空。
五、SSL连接错误
http 超文本传输协议
https 用SSL层加密的超文本传输协议
当我呢执行爬虫传入一个访问请求时可能会遇到:

没有SSL层加密,被浏览器提示不安全
有些网站使用了https,还是会提示不安全,是因为此网站的CA证书是自行签发的,不被CA机构信任
爬取此类站点,要设置忽略证书选项,否则会提示SSL连接错误

六、HTML标签层级结构
在HTML 中,所有标签定义的内容都是节点,它们构成了一个HTML DOM 树。

七、选择器
CSS 选择器会根据不同的节点设置不同的样式规则,来定位节点

更多定位规则可查看:https://www.runoob.com/cssref/css-selectors.html

八、会话Cookies
Cookies的作用和维持

九、代理的基本原理
反反爬虫:

对于爬虫来说,由于爬虫爬取速度过快,在爬取过程中可能遇到同一个IP 访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封锁IP ,这样会给爬取带来极大的不便

代理:实现IP 伪装,反反爬虫
使用代理隐藏真实的IP ,让服务器误以为是代理服务器在请求向己。这样在爬取过程中通过不断更换代理,就不会被封锁,可以达到很好的爬取效果

目录
相关文章
|
6天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
41 6
|
5天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
25 7
|
7天前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
26 6
|
4天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
5天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
|
7天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
27 4
|
7天前
|
数据采集 Web App开发 iOS开发
如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?
本文介绍了使用 Python 爬虫技术获取淘宝天猫商品价格信息的两种方法。方法一使用 Selenium 模拟浏览器操作,通过定位页面元素获取价格;方法二使用 Requests 和正则表达式直接请求页面内容并提取价格。每种方法都有详细步骤和代码示例,但需注意反爬措施和法律法规。
|
7天前
|
数据采集 存储 Web App开发
利用Python 的爬虫技术淘宝天猫销量和库存
使用 Python 爬虫技术获取淘宝天猫商品销量和库存的步骤包括:1. 安装 Python 和相关库(如 selenium、pandas),下载浏览器驱动;2. 使用 selenium 登录淘宝或天猫;3. 访问商品页面,分析网页结构,提取销量和库存信息;4. 处理和存储数据。注意网页结构可能变化,需遵守法律法规。
|
9天前
|
数据采集 存储 机器学习/深度学习
构建高效的Python网络爬虫
【10月更文挑战第25天】本文将引导你通过Python编程语言实现一个高效网络爬虫。我们将从基础的爬虫概念出发,逐步讲解如何利用Python强大的库和框架来爬取、解析网页数据,以及存储和管理这些数据。文章旨在为初学者提供一个清晰的爬虫开发路径,同时为有经验的开发者提供一些高级技巧。
10 1
|
存储 算法 索引
Python学习-基础知识-2
目录 Python基础知识2 一、二进制 二、文字编码-基础 为什么要有文字编码? 有哪些编码格式? 如何解决不同国家不兼容的编码格式? unicode编码格式的缺点 如何既能全球通用还可以规避unicode的缺点? python3的编码格式是什么样的? 三、浮点数 四、列表 如何理解列...