关于python正则表达式的学习收获

本文介绍了Python爬虫中使用正则表达式re模块的基础知识,包括模式、特殊字符类和字符组合的应用示例,以及如何使用`re.findall`函数进行内容提取。重点讲解了贪婪模式和非贪婪模式的区别,以及如何配合requests库进行网页爬取。
摘要由CSDN通过智能技术生成

       为了填补上次留下关于python爬虫的坑,就分享一下python爬虫中可能会用到的一些关于正则表达式的解析

       Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。re模块有很多种函数和修饰符可以调用

正则表达式模式

        首先就是一些表达式会出现的表达模式

模式描述
^匹配字符串的开头
$匹配字符串的末尾。
.匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
re*匹配0个或多个的表达式。
re+匹配1个或多个的表达式。
re?匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

特殊字符类

实例描述
.匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
\d匹配一个数字字符。等价于 [0-9]。
\D匹配一个非数字字符。等价于 [^0-9]。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。

字符组合应用

如果这些模式或者字符类看起来在实际中可能很单一,但是将它们组合起来应用的很巧妙,例如:

.*表示任意字符出现零次或多次,像a.*c,如果没有加就是表示贪婪模式,从a开头就必须找到最后一个c才算匹配完成,不愧是贪婪!

.*?就是加了个?,表示就是非贪婪模式,找到一个c就罢休了

.+?.*?的不同点在于+,.+?所匹配字符中间必须有字符,因为+表示1到多个

正则表达式的应用还有很多,如验证IP地址,你们也可以自行去检验,我上边用来验证到网站网址为

http://https: // regex101.com /

之前回顾

那么之前遗留的点,也算是对自己的查漏补缺了,.*?就可以让我们匹配不重复出现的所有内容

在使用()选定,我们所要获取图片SRC的内容就完成了

        # 使用通用爬虫对整张页面进行爬取

        page_text = requests.get(url=new_url, headers=headers).text


        # 使用聚焦爬虫对页面中所有图片进行爬取

        ex = '<div class="imageWarp"><img class="left lazy".*? data-original="(.*?)"'

        img_src_list = re.findall(ex, page_text, re.S)

        print(img_src_list)

findall函数

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。

正则表达式修饰符

修饰符描述
re.S使 . 匹配包括换行在内的所有字符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值