1. 页面解析和数据提取简介
- 结构数据:先有的结构,再谈数据
- JSON文件
- JSON Path
- 转换成Python类型进行操作(json类)
- XML文件
- 转化为Python类型进行操作(xml to dict)
- XPath
- CSS选择器
- 正则表达式
- 非结构化数据:现有数据,再谈结构
- 文本
- 电话号码
- 邮箱地址
- 通常处理上述数据,都有一定的规律,使用正则表达式
- HTML文件
- 正则
- XPath
- CSS选择器
2. 正则表达式
- 一套规则,可以字符串文本中进行搜索替换等
- 案例67_1,re的基本使用流程
- 正则常用方法函数:
- compile 函数用于编译正则表达式
- 生成一个正则表达式( Pattern )对象
- 供 match() 和 search() 这两个函数使用
- re.match函数
尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.match(pattern, string, flags=0) - re.search 扫描整个字符串并返回第一个成功的匹配
re.search(pattern, string, flags=0) - group() 或 groups() 匹配对象函数来获取匹配表达式
- re.sub用于替换字符串中的匹配项
re.sub(pattern, repl, string, count=0) - start() 返回匹配开始的位置
- end() 返回匹配结束的位置
- span() 返回一个元组包含匹配 (开始,结束) 的位置
- 参考案例36_1/2/3.py
- re.match和re.search的区别
- re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
- 而re.search匹配整个字符串,直到找到一个匹配。
- 匹配中文
- 大部分中文内容表示范围是[u4e00-u9fa5]
- findall找出所有的匹配
- 看案例36_4
- 贪婪和非贪婪
- 贪婪:尽可能多的匹配(*)表示
- 非贪婪:找到符合条件的最小内容即可,(?)表示
- 正则默认使用贪婪匹配
- 看案例36_5
3. XML XPath 请参考高级语言中的内容
本章案例较多:
源代码请到GITHUB下载:
https://github.com/FangbaiZhang/TLXY_study_note/tree/master/Spider