爬虫基本原理

什么是爬虫?即“请求”网站并“提取”数据的“自动化”程序。

爬虫基本流程:

发起请求:通过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形式存储

二进制文件:如图片、视频、音频等直接保存成特定格式即可

原文地址:https://www.cnblogs.com/wisir/p/9943962.html