爬虫数据采集分类
- 按采集对象分类
- 全网采集
- 全站采集
- 具体网站的制定数据采集
- 采集方案分类
- 利用http协议采集——页面分析
- 利用api接口采集——app数据采集
- 利用目标网站的api采集——微博、github等
Requests: 让 HTTP 服务人类
官网:https://requests.readthedocs.io/zh_CN/latest/
Requests 是一个 Python 的 HTTP 客户端库。可以用 Python 进行 get、post、head 等 HTTP 方法。例如:
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}
正则表达式
通过某种规则对字符串提取,对规则的编写就是编写正则表达式。
- . 匹配任意字符(不包括换行符)
- ^ 匹配开始位置,多行模式下匹配每一行的开始
- $ 匹配结束位置,多行模式下匹配每一行的结束
- * 匹配前一个元字符0到多次
- + 匹配前一个元字符1到多次
- ? 匹配前一个元字符0到1次
- {m, n} 匹配前一个元字符 m 到 n 次
- \\ 转义字符
- [ ] 字符集,可匹配其中任意一个字符
- | 逻辑表达式,如 a | b 可表示匹配 a 或者 b
- \b 匹配位于单词开始或结束位置的空字符串
- \B 匹配不位于单词开始或结束位置的空字符串
- \d 匹配一个数字,相当于 [0-9]
- \D 匹配非数字,相当于 [^0-9]
- \s 匹配任意空白字符
- \S 匹配非空白字符
- \w 匹配数字、字母、下划线中任意一个字符,相当与 [a-zA-Z0-9]
- \W 匹配非数字、字母、下划线中的任意字符,相当与 [a-zA-Z0-9]
正则表达式 Python 接口
import re
info = "姓名:lucky 生日:1998年12月16日 本科:2017年9月1日"
print(re.search("生日.*\d{4}", info).group())
print(re.match(".*生日.*?\d{4}""", info).group())
生日:1998年12月16日 本科:2017
姓名:lucky 生日:1998
BeautifulSoup4
官网:https://www.crummy.com/software/BeautifulSoup/
Beautiful Soup 是 python 的一个库,最主要的功能是从网页抓取数据。
Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup 就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup 已成为和 lxml、html6lib 一样出色的 python 解释器,为用户灵活地提供不同的解析策略或强劲的速度。
xpath
简介
- xpath 使用路径表达式在 xml 和 html 中进行导航
- xpath 包含标准函数库
- xpath 是一个 w3c 的标准