爬虫
请求网站并提供数据的自动化程序
爬虫的基本流程
1、发起请求
通过HTTP库向目标站点发起请求,其发送一个request,请求可以包含额外的headers等信息,等待服务器响应
2、获取响应
如果·服务器正常响应,会得到一个response,response的内容便是索要获取的页面内容,类型可能有HTML,Json字符串、二进制数据等类型
3、解析内容
得到的内容可能是HTML,可以用正则表达式,网页解析库解析,可能是Json,可以直接转为Json对象解析,也可能是二进制数据,可以保存或者进一步的处理。
4、保存数据
保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。
Request中包含什么
- 请求方式
主要有get,post两种,另外还有hade,put,delete,options - 请求url
url全称统一资源定位符,如一个网页文档,一张图片,一个视频等都可以用URL来唯一确定 - 请求头
包含请求时的头部信息,如user-agent, host, cookies等信息 - 请求体
请求时额外携带的数据如表单提交时的表单数据
Response中包含什么
- 响应状态
有多种响应状态,如200表示成功、301跳转、404找不到页面、502服务器错误 - 响应头
如内容类型,,内容长度,服务器信息,设置cookies - 响应体
最主要的部分,包含了请求资源的内容,如网页HTML,图片,二进制数据等
能爬怎样的数据
- 网页文本
如HTML, Json格式文本 - 图片
获取到的十二进制文件,保存为图片格式 - 视频
同为二进制文件,保存为视频格式 - 其他
只要是能请求的,都能获取
解析方式
- 直接处理
- Json解析
- 正则表达式
- BeautifulSoup
- Pyquery
- XPath
怎样解决JavaScript渲染的问题?
- 分析Ajax请求
- Seleniuim/WebDriver
- Splash 模拟JavaScript渲染