什么是爬虫?即“请求”网站并“提取”数据的“自动化”程序。
爬虫基本流程:
发起请求:通过HTTP库向目标站点发起请求,即发送一个Reques,请求可以包含额外的headers等信息,等待服务器相应。
获取相应内容:如果服务器能正常相应,会得到一个Response,Response的内容便是要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
解析内容:得到的内容可能是HTML,可以用正则表达式,网页解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
保存数据:保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。
Request中包含什么呢?
GET请求:请求数据暴露在URL里边;POST请求:表单提交的数据在Form Data里边。
Response中包含什么呢?
能抓取什么样的数据?
解析方式有哪些?
直接处理:如得到网页源码,得到图片的二进制数据存储到本地。
json解析:得到json键值对数据,在Network下面的XHR筛选出的内容中有得到的json数据。
正则表达式
beautifulsoup库解析
pyquery库解析
xpath库解析
往往自己爬到的数据和网页上显示的不一样,是因为网页除了一些request请求得到的数据,还有一些js渲染的数据,这些js的数据没有爬到,所以不一样。
怎么解决JavaScript渲染的问题?
分析ajax请求
selenium/webdriver来操作浏览器式的获取pagesource的内容
splash库
pyv8、ghost.py
怎样保存数据?
文本:纯文本、json、xml等
关系型数据库:如mysql、Oracle、sqlserver等具有结构化表结构形式存储
非关系型数据库:如MongoDB、Redis等key-value形式存储
二进制文件:如图片、视频、音频等直接保存成特定格式即可