11《Python 原生爬虫教程》使用正则表达式进行页面提取

发布网友 发布时间:2024-10-23 13:56

我来回答

1个回答

热心网友 时间:2024-10-29 12:13

上节课我们学习了如何使用 BeautifulSoup 来解析页面,这节课我们来学习下如何使用正则来解析页面。

通过学习正则表达式几个常用函数,可以根据需要对数据进行匹配筛选。

1. 正则表达式简介

在编写爬虫的过程中,我们需要解析网页的内容。作为文本解析利器的正则表达式当然可以运用到我们的爬虫开发中。页面解析过程是从海量的字符串中将所需数据匹配并提取出来,所以在正式的爬虫开发中正则会经常被用到。

正则表达式是对字符串操作的逻辑公式。提取网页数据时,需将源代码转换成字符串,然后通过正则表达式匹配想要的数据。

在我们开始使用正则表达式进行模式查找之前,需要熟悉正则表达式里面的字符的基本含义,这样就能方便地书写正则表达式进行模式匹配。

2. 正则表达式基本语法正则表达式的字符和含义

3. 正则表达式的常用方法

我们开发爬虫使用的是 Python 语言,Python 中如何使用正则表达式呢?Python 内置了正则表达式模块re,不需要安装,直接导入使用即可。

这里主要讲解 re 库中的几种常用方法。这些方法在爬虫开发中经常使用,掌握这些方法后,基本可以解决爬虫开发中需要使用正则表达式的问题。

3.1 re.findall

findall 方法是找到所有符合规则的匹配内容,具体语法如下:

来看个例子,找出所有的字符串中的数字:

效果如下图所示:

3.2 re.search

re.search 扫描整个字符串,并返回第一个成功的匹配。具体语法如下:

来看个例子:

效果如下图所示:

3.3 re.match

如果 string 开始的 0 或者多个字符匹配到了正则表达式样式,就返回一个相应的匹配对象。如果没有匹配,就返回 None;注意它跟零长度匹配是不同的。

实例:

效果如下:

3.4 re.split

用 pattern 分开 string。如果在 pattern 中捕获到括号,那么所有的组里的文字也会包含在列表里。如果 maxsplit 非零,最多进行 maxsplit 次分隔,剩下的字符全部返回到列表的最后一个元素。

实例:

效果如下:

3.5 re.sub

返回通过使用 repl 替换在 string 最左边非重叠出现的 pattern 而获得的字符串。如果样式没有找到,则不加改变地返回 string。repl 可以是字符串或函数;如为字符串,则其中任何反斜杠转义序列都会被处理。

实例:

例子如下:

3.6 re.subn

行为与 sub() 相同,但是返回一个元组 (字符串, 替换次数)。

实例:

例子如下:

4. 小结

这一小节,我们学习了正则表达式的基本语法,以及通过多个例子展示了正则表达式的使用方法,正则表达式难度较高,同学们需要多加练习,才能牢固地掌握。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com