爬虫入门基本原理

爬虫基本原理

爬虫定义:

请求网站并提取数据的自动化程序

爬虫基本流程:

  1. 发送请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。
  2. 获取响应内容是:如果服务器能正常响应,会得到一个Response,Response的内容便是所获取的页面内让那个,类型可以是HTML,Json字符串,二进制数据(如图片视频等类型。
  3. 解析内容:得到的尽可能是HTML,可以用正则表达式,网页解析库进行解析。可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
  4. 保存数据:存为文本,也可以保存到数据库,或者指定的格式。

Request包含什么:

  1. 请求方式:GET/POST
  2. 请求URL(统一资源定位符),一个网页文档,一张图片,一个视频
  3. 请求头:User-Agent、Host、Cookies等
  4. 请求体(POST请求时使用) -- form data,请求时额外携带的数据,如表单提交时的表单数据

Response包含:

  1. 响应状态 -- 状态码
  2. 响应头:内容类型、内容长度、服务器信息、设置cookie
  3. 响应体:请求资源的内容如网页HTML、图片、二进制数据等。

能抓什么数据:

  1. 网页文本:HTML, Json格式文本等
  2. 图片:获取到的是二进制文件,保存为图片格式
  3. 视频:同为二进制文件,保存为视频格式
  4. 其它:只要是能请求到的,都能获取

解析方式:

  1. 直接处理
  2. json解析 -- 网页是ajax加载的
  3. 正则表达式
  4. BeautifulSoup解析库
  5. PyQuery解析库
  6. XPath解析库

抓到的数据和浏览器看到的不一样:

存在javascript渲染问题,即看到的网页是经过JS渲染过的网页,而直接请求的没有经过渲染得到的

解决JavaScript渲染问题:

  1. 分析Ajax请求
  2. Selenium / WebDriver模仿JavaScript渲染
  3. Splash模拟JavaScript渲染
  4. PyV8/Ghost.py

怎样保存数据

  1. 文本
  2. 关系型数据库:MySQL、Oracle、SQL Server
  3. 非关系型数据库:MongoDB、Redis等Key-Value的形式
  4. 二进制文件:图片视频音频等直接保存
posted @ 2020-04-09 18:03  DengSchoo  阅读(138)  评论(0编辑  收藏  举报