爬虫基本原理
什么是爬虫?
爬虫程序的基本流程?
解析爬虫流程
1.什么是爬虫?
有人说,爬虫时爬行在网上的一个个蜘蛛。其实,就是负责向网站发送请求并获取回应,在回应中提取数据的自动化程序。
一个简单的爬虫,应具备的功能有:
》程序模拟向网站服务器发送请求
》接收到回应
》从回应中提取数据(html,json,二进制数据等)
》按照需要解析数据,提取需要的部分
》将解析结果保存
2.抽象出爬虫的基本流程
分4步走:
TD01:发送请求,等待服务器响应;
通过http库向目标站点发起请求,即发送一个request,request中包含一些必要的数据,比如headers,cookie等。
TD02:获取响应内容;
如果服务器正常响应(根据响应码判断),会获取到一个response。response的内容就是要获取的页面内容。其类型可能有:html,json字符串,二进制数据(如图片视频)等。
TD03:解析response;
html可以用正则表达式re,网页解析库等解析;
json可转换为json对象解析;
二进制数据可以直接保存,或进一步处理;
TD04:保存数据;
保存为文本,存在数据库,保存为特定格式的文件等等。
3.解析爬虫基本流程
request和response:
request告诉浏览器我的需求,想查看什么页面;
–可以使用http库向服务器发送请求,得到response
response是服务器解析request后返回的信息;
浏览器的request和response:
http request:浏览器发送信息给网址所在的服务器;
http response:服务器收到浏览器发送的信息后,根据信息进行相应的处理,再返回信息给浏览器;
数据展示:浏览器收到服务器的response后,对信息进行解析处理,再展示相关的数据。
request中包含什么?(network)
1)请求方式:主要有GET、POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等;
- GET:信息(请求的参数)在url中,可以直接输入url回车,发送请求;
- POST:登录时使用,信息在Form Data中,需要填写一些表单,才能发送请求;
2)请求URL:URL,统一资源定位符,如一个网页文档,一张图片,一个视频等都可以用URL唯一来确定。
3)请求头Request Headers:比较重要的配置信息,如User-Agent、Host、Cookies等信息,做爬虫时一般都需要
4)请求体:请求时额外携带的数据,如表单提交时的表单数据,一般GET方式时,请求体是不会携带内容的,POST需要(如Form Data)
response中包含什么?
1)响应状态:状态码Status Code:200,300,404,>500等,有多种响应状态,200表成功,301跳转,404找不到页面,502服务器错误;
2)响应头:Response Headers:如内容类型,内容长度,服务器信息,设置Cookie等;
3)响应体:最主要的部分,包含了请求资源的内容,如网页html,图片二进制数据等;
爬虫能抓怎样的数据?
1)网页文本:如HTML文档,json格式文本等
2)图片:获取到的是二进制文件
3)视频:也是二进制文件,保存为视频格式即可
4)其他:只要是能请求到的,都能获取
怎样来解析?
解析方式:
1)直接处理:比如返回的就是一个字符串
2)Json解析:比如返回的是json格式字符串,需要转换为Json对象处理
3)正则表达式
4)BeautifulSoup:解析库
5)PyQuery
6)XPath
为什么我抓到的和浏览器中看到的是不一样的呢?
javascript渲染
怎样解决JavaScript渲染的问题?
1)分析Ajax请求
2)使用Selenium、WebDriver驱动一个浏览器加载一个网页,自动化测试的工具
3)Splash,模拟渲染,类似于selenium:github.com中搜索splash
4)PyV8、Ghost.py
怎样来保存数据?
1)文本:纯文本、Json、Xml
2)关系型数据库:MySQL等具有结构化表结构形式存储
3)非关系型数据库:字典型存储,MongoDB,redis等
4)二进制文件:图片、音频、视频等直接保存为特定格式便可