——前文说过,爬虫的本质是模拟浏览器,那么,浏览器做了什么,我们爬虫程序也跟着做什么!下面,我们来分析爬虫的基本流程。
爬虫的基本流程
发起请求
通过HTTP库向目标站点发起请求,也就是发送一个Request
,请求可以包含额外的header
等信息,等待服务器响应
获取响应内容
如果服务器能正常响应,会得到一个Response
,Response
的内容便是所要获取的页面内容,类型可能是HTML、Json字符串、二进制数据(图片或者视频)等类型
解析内容
得到的内容可能是HTML
,可以用正则表达式,页面解析库进行解析;可能是Json
,可以直接转换为Json对象解析;可能是二进制数据,可以做保存或者进一步的处理
保存数据
保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件
什么是Request,Response
浏览器向服务器传达了我们想访问某个网页的需求,这个过程就叫做HTPP Request
服务器把你想要的网站数据发送给浏览器,这个过程就是HTTP Response
浏览器收到服务器的Response数据后,并不直接把数据丢给你。因为这些数据是用计算机的语言写的,浏览器还要把这些数据翻译成你能看得懂的样子,这个过程叫解析数据
Request中包含什么?
- 请求方式
主要有:GET/POST两种类型常用
GET和POST的区别就是:请求的数据GET是在url
中,POST则是存放在headers
头部
GET:向指定的资源发出“显示”请求。使用GET方法用于读取数据
POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)
- 请求URL
URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个数据都有一个唯一的URL,它包含的信息指出数据的位置以及浏览器应该怎么处理它。
爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据。
- 请求头Headers
包含请求时的头部信息,如User-Agent,Host,Referer,Cookies
等信息,下图是请求百度时,所有的请求头部信息参数
- 请求体
请求携带的数据,如GET请求加参数params
,POST请求提交表单数据data
Response中包含什么?
- 响应状态
有多种响应状态,如:200代表成功,301跳转,404找不到页面,502服务器错误
- 响应头
如内容类型,类型的长度,服务器信息,设置Cookie,如下图
- 响应体
最主要的部分,包含请求资源的内容,如网页HTMl,图片,二进制数据等
能爬取什么样的数据?
-
网页文本:如HTML文档,Json格式化文本等
-
图片:获取到的是二进制文件,保存为图片格式
-
视频:同样是二进制文件
-
其他:只要请求到的,都可以获取
如何解析数据?
-
直接处理
-
正则表达式处理
-
Json解析
-
解析库处理(BeautifulSoup、XPath)
爬虫引发的问题————
-
网络爬虫造成服务器资源开销,对服务器性能“骚扰”
-
网络爬虫突破访问控制,从而泄露个人隐私
-
由于数据产权归属,网络爬虫带来法律风险
限制爬虫的方法
-
来源审查:判断
User-Agent
进行限制
~检查来访HTTP协议头的User-Agent
域,只响应浏览器或友好爬虫的访问。 -
反爬策略:从技术层面限制爬虫
~账号及Cookies验证、验证码、数据加密、IP限制频次等手段 -
发布公告:
Robots协议
~告知爬虫网站的爬取策略,要求爬虫遵守。
Robots协议
Robots协议是互联网爬虫的一项公认的道德规范,它的全称是“网络爬虫排除标准”(Robots exclusion protocol),这个协议用来告诉爬虫,哪些页面是可以抓取的,哪些不可以。
如何查看网站的robots协议呢,很简单,在网站的域名后加上/robots.txt就可以了。
如下,京东robots协议
User-Agent表示爬虫类型,如
User-agent: Baiduspider
表示百度爬虫,User-agent: Etaospider
表示一淘爬虫
*
是通配符,代表所有
Allow代表可以被访问,Disallow代表禁止被访问
>>>
阅读更多文章请点击以下链接:
python爬虫从入门到放弃之一:认识爬虫
python爬虫从入门到放弃之二:HTML基础
python爬虫从入门到放弃之三:爬虫的基本流程
python爬虫从入门到放弃之四:Requests库基础
python爬虫从入门到放弃之五:Requests库高级用法
python爬虫从入门到放弃之六:BeautifulSoup库
python爬虫从入门到放弃之七:正则表达式
python爬虫从入门到放弃之八:Xpath
python爬虫从入门到放弃之九:Json解析
python爬虫从入门到放弃之十:selenium库
python爬虫从入门到放弃之十一:定时发送邮件
python爬虫从入门到放弃之十二:多协程
python爬虫从入门到放弃之十三:Scrapy概念和流程
python爬虫从入门到放弃之十四:Scrapy入门使用
网友评论