正则表达式和re模块

正则表达式

正则表达式相当于搜索框

Regular Expression,正则表达式,一种使用表达式的方式对字符串进行匹配的语法规则。

我们抓取到的网页源代码本质上就是一个超长的字符串,想从里面提取内容,用正则再合适不过了。

正则的优点:速度快,效率高,准确性高

正则的缺点:新手上手有点高。

不过只要掌握了正则编写的逻辑关系,写出一个提取页面内容的正则其实并不复杂

正则的语法:使用元字符进行排列组合用来匹配字符串,在线测试正则表达式https//tool.oschina.net/regex/

元字符:具有固定含义的特殊符号

常用元字符:

1 . 匹配除换行符以外的任意字符
2 \w 匹配字母或数字或下划线
3 \s 匹配任意的空白符
4 \d 匹配数字
5 \n 匹配一个换行符
6 \t 匹配一个制表符
7 ^ 匹配字符串的开始
8 $ 匹配字符串的结尾
9 \W 匹配非字母或数字或下划线
10 \D 匹配非数字
11 \S 匹配非空白符
12 a|b 匹配字符a或字符b
13 () 匹配括号内的表达式,也表示一个组
14 [...] 匹配字符组中的字符
15 [^...] 匹配除了字符组中字符的所有字符

量词:控制前面的元字符出现的次数

1 * 重复零次或更多次
2 + 重复一次或更多次
3 ? 重复零次或一次
4 {n} 重复n次
5 {n,m} 重复n次或更多次

贪婪匹配和惰性匹配

1 .* 贪婪匹配
2. .*? 惰性匹配

爬虫写的最多的是惰性匹配

eg:
str:玩儿吃鸡游戏,晚上一起上游戏,干嘛呢?打游戏啊
reg:玩儿.*?游戏
此时匹配的是玩儿吃鸡游戏

reg:玩儿.*游戏
此时匹配的是玩儿吃鸡游戏,晚上一起上游戏,干嘛呢?打游戏

str:<div>胡辣汤</div>
reg:<.*>
结果:<div>胡辣汤</div>

str:<div>胡辣汤</div>
reg:<.*?>
结果:<div>
    </div>
    
str:<div>胡辣汤</div><spon>饭团</spon>
reg:<div>.*?</div>
结果:<div>胡辣汤</div>

发现的规律:.?表示尽可能少的匹配.表示尽可能多的匹配。

三种解析方式:(数据提取)

1.re解析

2.bs4解析

3.xpath解析

这三种方式可以混合进行使用,完全以结果做导向,只要你拿到你想要的数据,用什么方案并不重要,当你掌握了这些之后,再考虑性能的问题。

re模块

re.compile()预加载正则

group()获取组

findall()方法

finditer()解析器 要用for in循环获取

search()精准查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值