GitHub代码练习地址:正则1:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac15_RE1.py
正则2:match、search、findall函数的使用案例:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac16_RE2.py
一、页面解析和数据提取
①结构化数据: 先有的结构,在谈数据
JSON文件
JSON Path
转换成Python类型进行操作(json类)
XML文件
转换成python类型(xmltodict)
XPath
CSS选择器
正则
②非结构化数据:先有数据,再谈结构
文本
电话号码
邮箱地址
通常处理此类数据,使用正则表达式
Html文件
正则
XPath
CSS选择器
二、正则简单应用
正则表达式:一套规则,可以在字符串文本中进行搜查替换等
python中正则模块是re
使用大致步骤:
1. compile函数将正则表达式的字符串编译为一个Pattern对象
2. 通过Pattern对象的一些列方法对文本进行匹配,匹配结果是一个Match对象
3. 用Match对象的方法,对结果进行操纵
正则常用方法:
match: 从开始位置开始查找,一次匹配
search:从任何位置查找,一次匹配, 案例v25
findall: 全部匹配,返回列表, 案例v26
finditer: 全部匹配,返回迭代器, 案例v26
split: 分割字符串,返回列表
sub:替换
匹配中文
中文unicode范围主要在[u4e00-u9fa5]
贪婪与非贪婪模式
贪婪模式: 在整个表达式匹配成功的前提下,尽可能多的匹配
非贪婪模式: xxxxxxxxxxxxxxxxxxxxxx, 尽可能少的匹配
python里面数量词默认是贪婪模式
例如:
查找文本abbbbbbccc
re是 ab*(*表示可以有一个或多个,也可以没有)
贪婪模式: 结果是abbbbbb
非贪婪: 结果是a