Python爬虫 正则表达式 re标准库

发布于:2025-07-05 ⋅ 阅读:(19) ⋅ 点赞:(0)

前言

正则表达式是Python爬虫最重要的过滤原始数据的手段之一,是爬虫最核心的技术

下面我分享一下我对正则表达式的心得和常用的基础知识

目录

正则表达式的基本匹配逻辑

正则表达式单个字符匹配列表

正则表达式多次匹配单个字符的方式

正则表达式贪婪匹配和惰性匹配

获取匹配后中的目标值

正则表达式在爬虫的使用心得

正则表达式Python代码示例


正则表达式的基本匹配逻辑

正则表达式的匹配是你写的公式有几个字符或者范围,它会从头到尾的去找,一直找到字符串结束

正则表达式单个字符匹配列表

.      匹配单个字符,不包括换行符   几个点匹配几个连着的字符

\w    匹配单个的字母、数字、下划线   几个匹配几个连着的字母、数字、下划线

\d     匹配单个数字

\s     匹配单个空格、换行符

大写表示的就是相反

\W    匹配单个非字母、数字、下划线

\D     匹配单个非数字

\S    匹配单个非空格、换行符

[]     表示单个字符,匹配中括号里面自定义的字符,字符之间直接连着

        其中 -  的意思    ^除了的意思   可以设置多个区间直接连续写   比如

                [abcd]   匹配单个a或者b或者c或者d的字符

                [a-f]      匹配单个a到f的字符

                [0-2a-e]   匹配单个0到2、a到e的字符

                [^a-e]      匹配单个除了a到e的字符

其他大多数是写什么内容匹配什么内容,比如我写e字符,那它就匹配e字符

正则表达式多次匹配单个字符的方式

如果单个字符想表示匹配多次,在单个匹配字符的符号后面跟着   {匹配字符数量} 

        匹配3个数字    \d{3}

如果单个字符想表示匹配是0次或者更多,在单个字符的符号后面跟着  *  

如果单个字符想表示匹配是1次或者更多,在单个字符的符号后面跟着  + 

正则表达式贪婪匹配和惰性匹配

贪婪匹配   按最大范围找到的一个最长的字符串作为匹配结果

惰性匹配   按最小范围找到的一个最短的字符串作为匹配结果

 和  +        就是默认的贪婪匹配

*?  和  +?     就是惰性匹配   

可以把惰性匹配看成   *?   和   +?  是   *   和    +  的进阶版

获取匹配后中的目标值

如果想要获取匹配好中的目标值,直接把想获取的目标值的位置,在正则表达式用括号括起来

比如 正则表达式 is(.*)M     得到的结果就是is字符串和M字符串之间的字符,并且是贪婪匹配

正则表达式在爬虫的使用心得

正则表达式在匹配一些不是很精细化的东西比较方便,但是精细化的操作使用难度很多,后期读代码维护起来也很浪费时间。

我一般喜欢使用正则表达式截取爬到网页源代码中的JavaScript标签里面的josn字符串,然后配合json标准库对json字符串进行转化,读取。

至于一些细节上面的采集,可以使用Xpath进行使用。

Xpath的特点就是上手快,适合精细定位。但是它是按照标签进行采集数据的,采集一些夸标签的数据显得很笨拙。

正则表达式Python代码示例

import re

str = "需要匹配的字符串"

# re.S参数是为了让正则表达式中的 . 可以匹配到换行符,适应复杂的页面源代码的数据过滤
res = re.findall("正则表达式", str, re.S)

print(res)


网站公告

今日签到

点亮在社区的每一天
去签到