Python爬虫之正则表达式基本用法实例分析
正则表达式是一种强大的文本处理工具,可以用于各种文本处理,如数据清洗、文本分析、信息提取等。在Python爬虫中,正则表达式也是一种常用的工具,用于从HTML页面中提取所需的信息。本攻略将详细讲Python爬虫中正则表达式的基本用法,包括正则表达式的语法、re模块的常用函数和示例说明。
正则表达式的语法
正则表达式是一种用于匹配字符串的模式,由普通字符和特殊字符组成。普通字符表示它本身,而特殊字符则表示一些特殊的含义。下面是一些常用的特殊字符:
.
:匹配任意一个字符,除了换行符。*
:匹配前面的零次或多次。+
:匹配前面字符一次或多次。?
:匹配前面的零次或一次。^
:匹配字符串开头。$
:匹配字符串的结尾。[]
:匹配括号中的任意一个字符。()
:将括号中的内容作为一个整体进行匹配。|
:匹两个或多个模式中的任意一个。
re模块的常用函数
在Python中,我们使用re模块提供的函数来操作则表达式。下面是re模块的常用函数:
re.search()
re.search()函数用于在字符串中搜索匹配正则表达式的一个位置,并返回一个匹配对象。如果匹配成功,则返回第一个匹配对象;如果匹配失败返回None。下面是一个示例:
import re
text = 'The quick brown fox jumps over the lazy dog.'
result = re.search(r'fox', text)
print(result) # 输出结果为<re.Match object; span=(16, 19), match='fox'>
在上面的代码中,我们使用re.search()函数搜索文本中的fox
,并返回一个匹配对象。运行代码后,输出结果为匹配对象的信息。
re.findall()
re.findall()函数用于搜索字符串中所有匹配正表达式的子串,并返回一个列表。下面是一个例:
import re
text = 'The answer is 42.'
result = re.findall(r'\d+', text)
print(result) # 输出结果为['42']
在上面的代码,我们使用re.findall()函数搜索文本中的数字,并返回一个列表。运行代码后,输出结果为匹配到的数字。
示例说明
示例1:从HTML页面中提取所有链接
下面是一个例子,演示如何使用正则表达式从HTML页面中提取所有链接:
import re
import requests
url = 'https://www.baidu.com'
response = requests.get(url)
text = response.text
links = re.findall(r'href="(.*?)"', text)
print(links)
在上面的代码中,我们使用requests库获取百度首页的HTML页面,并使用正则表达式href.*?)"
从页面中提取所有链接。.*?
表示匹配任意字符,?
表示非贪婪模式,即尽可能少地匹配。运行代码后,输出结果为所有链接的列表。
示例2:从HTML页面中提取图片链接
下面是另一个例子,演示如何使用正则表达式从HTML页面中提取所有图片链接:
import re
import requests
url = 'https://www.baidu.com'
response = requests.get(url)
text = response.text
img_links = re.findall(r'<img.*?src="(.*?)"', text)
print(img_links)
在上面的代码中,我们使用requests库获取百度首页的HTML页面,并使用正则表达式<img.*?src="(.*?)"
从页面中提取所有图片链接。<img.*?
表示匹配<img
标签,src="(.*?)"
表示匹配src
属性的值。运行代码后,输出结果为所有图片链接的列表。
总结
本攻略详细讲解了Python爬虫中正则表达式的基本用法,包括正则表达式的语法、re模块的常用函数和示例说明。正则表达式是一种强大的文本处理工具,熟练掌握正则表式的用法可以大大提高的工作效率。在爬虫中,正则表达式也是一种常用的工具,用于从HTML页面中提取所需的信息。我们演示了如何使用正则表达式从HTML页面中提取所有链接和图片链接,希望读者可以通过这些示例更好地理解正则表达式的用法。