龙空技术网

学习Python语言(第十一章 正则表达式:让爬虫事半功倍)

风一样的小火柴 485

前言:

而今你们对“正则表达式过滤html”可能比较重视,兄弟们都需要知道一些“正则表达式过滤html”的相关文章。那么小编也在网摘上收集了一些有关“正则表达式过滤html””的相关文章,希望咱们能喜欢,看官们一起来了解一下吧!

在利用爬虫爬去数据的过程中,为了获取最精准的数据,必须对已经爬去到的字符串进行过滤,除了直接编写要过滤的字符串以外,还可以利用正则表达式,以最简化、最快速的方式找找需要的信息。

正则表达式是一个特殊的字符串序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。它首先设定好了一些特殊的字及字符组合,通过组合的“规则字符串”来对字符串进行过滤,从而获取或匹配我们想要的特定内容。它具有灵活、逻辑性和功能性非常的强,能迅速地通过表达式从字符串中找到所需信息的优点。

在Python中,我们可以利用"re"模块使用正则表达式的所有功能。

下面简单讲解一下“re”模块的使用:

re.compile():编译正则表达式模式,返回一个对象,不用再编译,效率变高。

re.findall():遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。

compile和findall函数的示例

re.split():按照能够匹配的子串将string分割后返回列表。

split函数的示例

关于正则表达式的编写:是由多个特殊含义的字符组成的,下面列出部分字符含义:

如给出一些常用的表达式:

邮箱地址匹配:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$数字匹配:^[0-9]*$汉字:^[\u4e00-\u9fa5]{0,}$身份证号(15位、18位数字):^\d{15}|\d{18}$手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

各种匹配表达式同时也能够满足对网页数据分析的需求,在我们爬数据时,其实爬的就是网页源代码,如今日头条网页的部分HTML:

还有这样的

这些看似杂乱无章的HTML其实可以通过正则表达式的过滤,就可以简单的获取其中有用的信息。如这样:

所以,获取数据很简单,但如何从源数据中分析并找到自己想要的那一部分数据很困难。从下一章开始,我们开始讲爬虫的编写过程,大家相互学习吧。

关于正则表达式,功能实在强大,强大到需要讲很多很多的内容,而不是短短一小节就能讲完的,因此,我们需要在不断练习中去感悟其中的奥妙。大家可以私信我,分享相关的正则表达式指南哈。

标签: #正则表达式过滤html