爬虫知识梳理

本文介绍了Python爬虫的基础知识,包括通用和聚焦爬虫的分类,模拟浏览器请求数据的方法如requests模块,数据提取技巧如正则、BeautifulSoup、XPath和JSONPath。还涉及动态HTML处理,如Selenium和PhantomJS,以及机器图像识别中的OCR技术。

爬虫知识简单梳理

1.分类

  • 通用爬虫(百度、Google等搜索引擎:大而广)
  • 聚焦爬虫(特定需求的爬取:爬取筛选需求数据)

2.模拟浏览器请求数据(常用)

  • requests模块API链接
    • 核心:response = requests.request()
    • 衍生:
      • requests.get()
      • requests.post()
      • requests.head()
      • requests.put()
      • requests.patch()
      • requests.delete()
    • session
      • ssion = requests.session() #创建含session对象,其他请求不变。
    • 返回内容response
      • response.text
      • response.content # 字节流
      • response.encoding
      • response.aparent_encoding 传过来的数据的原编码格式。一般设置为response.encoding = response.aparent_encoding
      • response.status_code
      • response.cookies.get_dict()
      • response.url
      • response.body
      • response.meta = {'depth':'深度值'} #用于在不同请求间传递数据(如上一个parse解析过后,可以通过meta参数,由下个方法的meta对象,进行提取)

3.数据提取

  • 非结构化数据提取
    • 文本、电话号码、邮箱
      • 正则
    • HTML文件
      • 正则
      • XPath
      • CSS选择器
  • 结构化数据提取
    • JSON文件
      • json path
      • 转化成Python类型进行操作(json类)
    • XML文件
      • 转化成Python类型(xmltodic)
      • XPath
      • CSS选择器
      • 正则
XML和HTML区别
数据格式描述设计目标
XMLExtensible Markup Language (可扩展标记语言)被设计为传输和存储数据,其焦点是数据的内容。
HTMLHyperText Markup Language (超文本标记语言)显示数据以及如何更好显示数据。
HTML DOMDocument Object Model for HTML (文档对象模型)通过 HTML DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。
a. 正则(re模块)
b. Beautiful Soup4模块API链接

lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml。

BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。

c.XPath、lxml类库
正则、beautifulsoup、lxml对比
抓取工具速度使用难度安装难度
正则最快困难无(内置)
BeautifulSoup最简单简单
lxml简单一般
d. JSON与JsonPATH

API_DOC
json在线解析

  • JSON模块
    • json.loads()把Json格式字符串解码转换成Python对象
    • json.dumps()实现python类型转化为json字符串
    • json.load()读取文件中json形式的字符串元素 转化为python类型
    • json.dump()将Python内置类型序列化为json对象后写入文件

chardet优秀的编码识别模块

  • JsonPath
    • 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java
    • API_DOC

编码问题:
decode的作用是将其他编码的字符串转换成 Unicode 编码
encode的作用是将 Unicode 编码转换成其他编码的字符串
一句话:UTF-8是对Unicode字符集进行编码的一种编码方式

4.动态HTML处理

那些使用了 Ajax 或 DHTML 技术改变 / 加载内容的页面,可能有一些采集手段。但是用 Python 解决这个问题只有两种途径:
1.直接从 JavaScript 代码里采集内容(费时费力)
2.用 Python 的 第三方库运行 JavaScript,直接采集你在浏览器里看到的页面(这个可以有)。

方式一(模拟浏览器登录):

a.Selenium 浏览器指令模块
  • Selenium 可以根据我们的指令,让浏览器自动加载页面(但不包含浏览器),获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。
  • api_doc
b.PhantomJS 无界面浏览器
  • 是个无界面的浏览器软件,需要下载
  • api_doc
  • 通过selenium来调用PhantomJS实现对应操作。

方式二(构建具体请求信息):

  • 构建具体的http信息,携带cookie、请求头等具体信息,进行发送请求,实现登录等功能。

5.机器图像识别

OCR(Optical Character Recognition, OCR)光学文字识别

Tesseract库(Google开源OCR库)


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值