摘要:本文简明的讲清了Python正则表达式与网络爬虫的关系,以及如何进行网络爬虫,希望对欲快速入门Python网络爬虫的人们有一定支持和指导作用。
关键词:Python正则表达式;网络爬虫
一、网络爬虫
网络爬虫,就是行走在网络上的爬虫,遇到喜欢的食物,就会抓取下来。Python爬虫,就是只要能在网络上看到的数据都可用Python爬取,大多数的爬虫都是通过发送请求-获取页面-解析页面-提取和存储内容来实现,实际就是用来获取网页的信息。
二、正则表达式(Regular Expression)
字符串是我们在编程中用到的一种数据结构,涉及到很多的字符串的方法操作,同样判断一个字符串是否满足某种格式是我们常常遇到的问题,可以用正则表达式来处理。设计思想为定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否則,该字符串就不“匹配”。
三、Pyhton正则表达式详解
Python 自1.5版本起增加了re 模块,提供了正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式。Emacs 风格模式可读性稍差些,而且功能也不强,因此编写新代码时尽量不要再使用 regex 模块。
就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。使用这个小型语言,你可以为想要匹配的相应字符串集指定规则;该字符串集可能包含英文语句、e-mail地址、TeX命令或任何你想要的东西。随后可以检查如“这个字符串匹配该模式吗?”或“在这个字符串中是否有部分匹配该模式呢?”。你也可以使用 RE 以各种方式来修改或分割字符串。
正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。在高级用法中,也许还要仔细留意引擎是如何执行给定 RE ,如何以特定方式编写 RE 以令生产的字节码运行速度更快。
正则表达式语言相对小型和功能有限,因此并非所有字符串处理都能用正则表达式完成。当然也有些任务可以用正则表达式完成,不过最终表达式会变得异常复杂。碰到这些情形时,编写 Python 代码进行处理可能反而更好;尽管 Python 代码比一个精巧的正则表达式要慢些,但它更易理解。
首先通过一个实例来讲解正则表达式的用法。如我们想提取字符串“China 123 world”中的3个数字,可以通过如下代码实现:
import re
content=’China 123 world’
result=re.findall(‘\d\d\d’,content)
print(result)
运行结果:[‘123’]
下面我们解释一下:第1行代码是导入re库,其为Python自带。findall()函数的功能是在原始文本中寻找所有符合匹配规则的文本内容。用法如下:re.findall(匹配规则,原始文本)。
再看一例:
import re
content=’China 123 world 456 铁路12306’
result=re.findall(‘\d\d\d’,content)
print(result)
运行结果:['123', '456', '123']
规则中‘\d’表示一个数字字符。运行结果是一个列表。如果要得到字符’456’,可以用list()方法:b=result[1],print(b)实现,其运行结果为:456。
一些常见特定符号及其功能见图表1。
例3:非贪婪匹配
import re
content=’文本A百度新闻文本B’
result=re.findall(‘文本A(.*?)文本B’,content)
print(result)
运行结果:['百度新闻']
其中(.*?)叫做非贪婪匹配, re.findall(‘文本A(.*?)文本B’,content)的结果就是提取文本A与文本B之间的内容,在实际爬取过程中,常常用到re.findall(匹配规则,原始文本,re.S),re.S加上后就不受换行的影响。
例4:简单清洗
函数:re.sub(被替换的内容,替换成的内容,原字符串)。
代码:title=re.sub(‘<.*?>’,’ ’,title)
将title字符串中以<…>形式的内容都将被空格代替。
总之,用正则表达式就可以实际网络爬虫。其基本思想如下:
第一步:获取网页原代码;
第二步:通过正则表达式抓取想要的内容;
第三步:数据清洗。
正则表达式在爬虫中的应用
Python 因为开源、简便、易上手,被普遍的应用在网络爬虫,并且新手编程人员也可以很容易实现代码开 发。它在网络爬虫方面有较强的技术。它可以帮助用户高效、快速地获取用户想要的信息,并且,依照最近的几年来看,数据还在暴增的大环境下,网络爬虫技术也会在众多同类语言中脱颖而出,成为网络数据获取的主 要技术。Python 语言的热度也会越来越高,有可能成为以后的网络的基本的高级编程语言。
例5:一个用python编写的网络数据抓取程序。
网络爬虫不仅能够为搜索引擎采集网络信息,而且还可以作为定向信息采集器,定向采集某些网站下的特定信息。而随着近几年来的发展,python的受欢迎度也越来越高,而它的运用的领域也是越来越多,比如人工智能和大数据等领域,python都可在其中扮演者重要的角色。
参考文献
[1]丁辉 主编 Python基础与大数据应用 人民邮电出版社,2020.
[2] [美]John V.Guttag 著 陈光欣 译Python编程导论人民邮电出版社,2018.
作者简介: 陈陵,男,1963年3月,汉族,重庆人,本科学历,数学副教授,重庆工贸职业技术学院人工智能学院,主要从事电子商务、数据分析的教学研究