网络数据抓取的工作原理及工作流程

爬虫基本流程

  1. 发起请求:
    浏览器发送消息给该网址所在的服务器,这个过程叫做HTTP Request。而爬虫通过模拟浏览器的HTTP库向目标站点发送一个Request(可以包含额外的headers等信息),等待服务器响应。
    Request详解
    请求方式:主要有GET、POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等。
    请求URL:URL全称统一资源定位符,如一个网页文档、一张图片、一个视频等都可以用URL唯一来确定。
    请求头:包含请求时的头部信息,如User-Agent、Host、Cookies等信息。
    请求体:请求时额外携带的数据如表单提交时的表单数据

  2. 获取响应内容:
    服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处理,然后把消息回传给浏览器。这个过程叫做HTTP Response。Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。
    Response详解
    响应状态:有多种响应状态,如200代表成功、301跳转、404找不到页面、502服务器错误
    响应头:如内容类型、内容长度、服务器信息、设置Cookie等等。
    响应体:最主要的部分,包含了请求资源的内容,如网页HTML、图片二进制数据等。

  3. 解析内容:
    主要方法:
    直接处理,Json解析,正则表达式,BeautifulSoup,PyQuery,XPath等
    1)若得到的内容是HTML,可以用正则表达式、网页解析库进行解析。
    2)若是Json,可以直接转为Json对象解析,
    3)若是二进制数据,可以做保存或者进一步的处理。

  4. 保存数据:
    保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件.
    1)文本:纯文本、Json、Xml等。
    2)关系型数据库:如MySQL、Oracle、SQL Server等具有结构化表结构形式存储。
    3)非关系型数据库:如MongoDB、Redis等Key-Value形式存储。
    4)二进制文件:如图片、视频、音频等等直接保存成特定格式即可。

抓取中可能出现的问题

  1. 抓到的和浏览器看到的不一样?
  • 网页通过浏览器的解析,加载CSS与JS等文件对网页进行解析渲染,达到我们看到绚丽的网页,而我们抓到的文件只是一些代码,css文件无法调用,使得样式不能表现出来,那么网页就会出现错位等等问题。
  1. 如何解决JavaScript渲染的问题
  • 分析Ajax请求、Selenium/WebDriver、Splash、PyV8、Ghost.py等库

你可能感兴趣的:(网络数据抓取的工作原理及工作流程)