正则表达式

在 2.2 节中,我们已经可以用 requests 库来获取网页的源代码,得到 HTML 代码。但我们真正想要的数据是包含在 HTML 代码之中的,要怎样才能从 HTML 代码中获取想要的信息呢?正则表达式就是其中一个有效的方法。

本节我们将了解一下正则表达式的相关用法。正则表达式是用来处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索、替换、匹配验证都不在话下。

当然,对于爬虫来说,有了它,从 HTML 里提取想要的信息就非常方便了。

实例引入

说了这么多,可能我们对正则表达式到底是什么还是比较模糊,下面就用几个实例来看一下它的用法。

打开开源中国提供的正则表达式测试工具 http://tool.oschina.net/regex/https://regex101.com/ ,输入待匹配的文本,然后选择常用的正则表达式,就可以得出相应的匹配结果了。例如,这里输入如下待匹配的文本。

Hello, my phone number is 010-86432100 and email is cqc@cuiqingcai.com,   and my website is https://cuiqingcai.com

这段字符串中包含一个电话号码、一个 E-mail 地址和一个 URL,接下来就尝试用正则表达式将这些内容提取出来。

在网页右侧选择 “匹配 Email 地址”,就可以看到下方出现了文本中的 E-mail,如图 2-11 所示。

如果选择 “匹配网址URL”,可以看到下方出现了文本中的 URL,如图 2-12 所示。

match

findall

sub

compile

总结

到此为止,正则表达式的基本用法就介绍完了,后面会通过具体的实例来巩固这些方法。