Python爬虫之正则表达式基本用法实例分析

  • Post category:Python

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页面中提取所有链接和图片链接,希望读者可以通过这些示例更好地理解正则表达式的用法。