Python re模块在爬虫中的应用
更新时间:2023-11-26Python中re模块的基础应用
Python中的re模块是一个正则表达式工具包,提供了一系列的函数来对字符串进行匹配和替换操作。以下是几个re模块的基础应用:
import re # 匹配数字 str1 = "123456789" pattern = "\d+" res = re.findall(pattern, str1) print(res) # 输出 ['123456789'] # 匹配字符 str2 = "this is a test!" pattern = "\w+" res = re.findall(pattern, str2) print(res) # 输出 ['this', 'is', 'a', 'test'] # 匹配邮箱地址 str3 = "my email is example@163.com" pattern = "\w+@[a-z0-9]+\.[a-z]+" res = re.findall(pattern, str3) print(res) # 输出 ['example@163.com']
re模块在爬虫中的高级应用
在进行爬虫开发时,re模块的高级应用是非常有用的。几个常用的场景如下:
1. 减少爬虫爬取的数据量
在爬取网页时,可以通过正则表达式的方式从HTML中提取需要的信息,从而减少爬虫所爬取的数据量,提高爬取效率。下面是一个通过正则表达式从HTML中提取图片链接的例子:
import re import requests url = "https://www.example.com" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" } res = requests.get(url, headers=headers) pattern = '(?<=src=")[^"]*\.jpg|png|gif(?=")' img_links = re.findall(pattern, res.text) print(img_links)
上述代码中,通过requests库请求指定url地址,然后使用正则表达式提取HTML中的jpg、png和gif格式的图片链接,提高爬取效率。
2. 数据清洗
爬取的数据往往包含大量无用信息,需要进行数据清洗。re模块提供了一系列的函数来方便的清洗数据。下面是一个例子:
import re str1 = "hello world\nthis is\na test" pattern = "\n" res = re.sub(pattern, "", str1) print(res) # 输出 helloworldthis isa test
上述代码中,使用正则表达式将字符串中的"\n"替换为空,从而实现数据清洗的目的。
总结
Python中的re模块是一个极为有用的正则表达式工具包,可以用于实现字符串的匹配、替换和清洗等操作。在爬虫开发中,re模块的应用十分广泛,可以通过正则表达式实现对HTML文本的提取、数据清洗等操作,让爬虫的效率和准确性都有所提高。