1.华小智系列 - Python基础(案例版)
《Python基础》目录
以下详细内容请点击获取。
第九讲:综合实战5 - 正则表达式提取baiduxinwen
正则表达式是一个非常好用的提取信息的手段,它可以帮助提取文本中所需信息,而且掌握了正则表达式后,不仅可以在爬虫中运用它来提取网页信息,在普通的文本信息中,也可以通过正则表达式来提取所需的内容,这是BeautifulSoup、pquery和Xpath这些专门用来解析网页源代码的库所不能比拟的。
1.正则表达式基础1 - findall方法
首先拿一个简单的例子来演示下正则表达式的作用,比如想提取’Hello 123 world’中的3个数字,可以通过如下代码实现:
import re
a = 'Hello 123 world'
result = re.findall('\d\d\d' , a)
print(result)
首先引入正则表达式re库,其中re这个库是Python自带的,所以不用额外安装。
然后解释下findall方法的使用规则,如下图所示,re.findall是根据匹配规则在原始文本中找寻所需的内容。这里的匹配规则为:‘\d’表示匹配一个数字,’\d\d\d’就表示匹配三个数字,所以re.findall(‘\d\d\d’, content)就是在content中寻找连续的三个数字。
2.正则表达式基础2- 非贪婪匹配之(.*?)
下面来介绍下一些常用的匹配规则的符号,注意都是英文格式下的符号。
上面的内容看似很多,不过读者不用担心,因为在实战中,大部分情况下需要用到的只有这两种情况:(.?)与.?。这里简单讲解一下里面的换行符\n和制表符\t,简单来说,\n表示换行(相当于在编辑WORD时用到的Enter键),\t为制表符(相当于按一下Tab键或者是按八下空格键)。在网页源代码里经常会看到换行及空格,那些在网页源代码里其实就是\n换行符及\t制表符。
3.正则表达式基础3 - 非贪婪匹配之.*?
如果说(.?)是用来获取文本A与文本B之间的内容,那.?是用来做什么的呢?如下图所示,它的作用简单来说是表示文本C和文本D之间的内容,这是因为文本C和文本D中间的内容可能是经常变动没有办法写到匹配规则里,或者说内容较多我们不想写到匹配规则里。
4.正则表达式基础4 - 自动考虑换行之修饰符re.S介绍
修饰符有很多,用的最多的就是re.S,它的作用就是在findall查找的时候,可以自动考虑到换行的影响,使得.*?可以匹配换行。它的使用方法如下,加上re.S就可以自动考虑换行了。
5.正则表达式基础5 - 小知识点补充
(1) sub()函数
sub()函数中的sub是英文substitute(替换)的缩写,它的具体使用格式是:re.sub(需要替换的内容,替换值,原字符串),主要就是用来清洗正则表达式获取到的内容,比如说,我们之前获取的到的新闻标题,其实有点瑕疵:
6.实战!baidu新闻标题、网址、日期及来源解析
在本小节我们将之前学习的内容做一个汇总,展示下一个完整网页爬虫的基本步骤。
7.大作业及后续内容
讲到这里,Python基础课就告一段落啦,虽然说是叫做Python基础课,其实它也可以叫做商业爬虫入门课了。我这边给大家留个大作业,算是作为一个学业总结。
8、课程相关资源
拓展:Python进阶的其他应用
https://shimo.im/docs/vp6KVJXR8tqWxgXR/ 《华小智智能平台课程(课表)》,可复制链接后用石墨文档 App 或小程序打开