爬虫从头学之爬虫基本原理

  1. 什么是爬虫:

    1. 请求网站并提取数据自动化程序
  2. 爬虫基本流程:

    1. 发起请求:

      通过Http库向目标站点发起请求,即发送一个Request,请求包括额外的headers等信息,等待服务器响应。

    2. 获取响应内容

      如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。

    3. 解析内容

      得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以直接转为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。

    4. 保存数据

      保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。

  3. Request和Response(请求和响应)

    1. Request

      1. Method请求方式

        请求方法主要为两种Post,Get

        主要差别:Get的请求信息在地址上,Post的请求信息在form-data

        Get:请求参数全部在url后面,可以直接在url后面添加信息访问新地址

        Post:请求信息在Form Data,需要构造表单,表单提交才可以post提交

      2. 请求URL

        URL全称统一资源定位符,如一个网页文档、一张图片、一个视频等都可以用URL唯一来确定。

      3. 请求头

        包含请求时的头部信息,如User-Agent、Host、Cookies等信息。

      4. 请求体

        请求时额外携带的数据如表单提交时的表单数据

    2. Response

      1. 响应状态

        有多种响应状态,如200代表成功、301跳转、404找不到页面、502服务器错误

      2. 响应头

        如内容类型、内容长度、服务器信息、设置Cookie等等。

      3. 响应体

        最主要的部分,包含了请求资源的内容,如网页HTML、图片二进制数据等。

  4. 能抓什么数据

    网页文本,图片,视频等要是能请求到的,都能获取。

  5. 解析

    • 直接处理
    • Json解析
    • 正则表达式
    • BeautifulSoup
    • PyQuery
    • Xpath
  6. 为什么我抓到的和浏览器看到的不一样?

    因为爬虫爬取的数据是Js没有渲染的数据,而浏览器中看到的是JS完成渲染后的数据。

  7. 解决Js渲染问题

    • 分析Ajax请求
    • Selenium/WebDriver
      • 采用自动化测试工具,用Selenium来解析Js,相当于浏览器
    • Splash
    • PyV8、Ghost.py
  8. 保存数据

    1. 文本
    2. 关系型数据库
    3. 非关系型数据库
    4. 二进制文件
  9. 爬虫相关

    • 请求
      • urllib
      • requests
    • 解析
      • 正则
      • BeautifulSoup
      • PyQuery(JQuery语法)
      • xpath
    • JavaScript渲染问题
      • Selenium/WebDriver
    • 框架
      • PySpider
      • Scrapy
相关文章
相关标签/搜索