python爬虫学习-day003

爬虫基本原理

  • 定义: 请求网站并提取数据的自动化程序
基本流程
  • 发起请求
    • 经过http库向目标站点发起请求,即发送一个Request,请求能够包含额外的headers等信息,等待服务器响应
  • 获取响应内容
    • 若是服务器能正常响应,会获得一个Response,Response的内容即是所要获取的页面内容,类型可能有HTML,json字符串,二进制(如图片视频)等类型。
  • 解析内容
    • 获得的内容多是HTML,能够用正则表达式,网页解析库进行解析,多是Json,多是二进制数据,能够作保存或者进一步处理
  • 保存数据
    • 保存形式多样,能够存为文本,也能够保存至特定格式的文件。

Request与Response

  • Request
    • 浏览器就发送消息给该网址所在的服务器,这个过程叫HTTP Request
    • 请求方式
      • 主要有GET,POST两种类型,HEAD,PUT,DELETE,OPTIONS等
    • 请求URL
      • URL全称统一资源定位符,如一个网页文档,一张图片,一个视频等均可以用URL惟一来肯定
    • 请求头
      • 包含请求时的头部信息,如User-Agent,Host,Cookies等信息。
    • 请求体
      • 请求时额外携带的数据如表单提交时的表单数据
  • Response
    • 服务器收到浏览器发送的消息后,可以根据浏览器发送消息的内容,而后把消息回传给浏览器。这个过程叫HTTP Response
    • 响应状态
      • 有多种响应状态,如200表明成功,301跳转,404找不到页面,502服务器错误
    • 响应头
      • 如内容类型,内容长度,服务器信息,设置cookie等等
    • 响应体
      • 最主要的部分,包含了请求资源的内容,如HTML,图片,二进制数据等。

抓取的数据

  • 网页文本: 如HTML文档,Json格式文本
  • 图片:获取的是二进制文件,保存为图片格式
  • 视频:同为二进制文件,保存视频格式便可
  • 其余:只要是能请求到的,都能获取

解析方式

  • 直接解析
  • Json解析
  • 正则表达式
  • BeautifulSoup: 比正则更好用,更迅速,更快
  • PyQuery
  • XPath

抓到的数据和浏览器显示不一致

请求到的页面中包含了一些js脚本javascript

解决JavaScript渲染问题

  • 分析Ajax请求
  • Selenium/WebDriver
  • Splash 模拟javascript渲染 github开源
  • PyV8,Ghost.py

保存数据

  • 文本: 纯文本,json,xml等
  • 关系型数据库: 如mysql,oracle,SQL Server等具备结构化表格形式存储
  • 非关系型数据库:如Mongodb,Redis等key-value形式存储
  • 二进制文件: 如图片,视频,音频等直接保存称特定格式便可
相关文章
相关标签/搜索