在爬虫中,正则表达式被广泛用于从网页中提取特定信息。以下是一些常用的正则表达式方法举例,以及它们在爬虫中的典型应用场景:
1. 提取URL
import re
url_pattern = r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'
urls = re.findall(url_pattern, html_content)
用于从网页中提取所有的HTTP或HTTPS链接。
2. 提取电子邮件地址
email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
emails = re.findall(email_pattern, html_content)
用于从文本中找出所有电子邮件地址。
3. 提取电话号码
phone_pattern = r'\b\d{3}[-.\s]?\d{3}[-.\s]?\d{4}\b'
phones = re.findall(phone_pattern, html_content)
用于匹配美国格式的电话号码。
4. 提取HTML标签内容
tag_pattern = r'>([^<]+)</a>'
contents = re.findall(tag_pattern, html_content)
提取<a>
标签中的链接文本。
5. 提取HTML标签属性
src_pattern = r'<img src="([^"]+)"'
srcs = re.findall(src_pattern, html_content)
提取<img>
标签中的src
属性值,常用于获取图片URL。
6. 提取特定ID或类的内容
id_pattern = r'id="([^"]+)"'
class_pattern = r'class="([^"]+)"'
ids = re.findall(id_pattern, html_content)
classes = re.findall(class_pattern, html_content)
提取具有特定ID或类的元素。
7. 提取时间信息
time_pattern = r'\b(?:\d{1,2}[-/]\d{1,2}[-/]\d{2,4} \d{1,2}:\d{2}(:\d{2})?)\b'
times = re.findall(time_pattern, html_content)
匹配日期和时间格式的字符串。
8. 提取价格信息
price_pattern = r'\$\d*(?:,\d{3})*\.\d{2}'
prices = re.findall(price_pattern, html_content)
匹配以美元符号开头的价格信息。
9. 提取JSONP回调函数
jsonp_pattern = r'jsonp_\d+\((.*?)\)'
jsonp_data = re.search(jsonp_pattern, script_content).group(1)
从JSONP回调中提取JSON数据。
10. 替换字符串
clean_pattern = r'[^\w\s]'
cleaned_content = re.sub(clean_pattern, '', html_content)
删除所有非单词字符和非空格字符,用于清理HTML内容。
11. 提取CSS属性值
css_property_pattern = r':([^;]+)'
css_values = re.findall(css_property_pattern, css_content)
从CSS中提取属性值。
12. 提取JavaScript变量声明
js_var_pattern = r'var\s+(\w+) =\s+([^;]+);'
js_vars = re.findall(js_var_pattern, script_content)
匹配JavaScript中的变量声明。
这些示例展示了正则表达式在爬虫中的多样性和强大功能,它们可以帮助开发者提取几乎任何类型的数据。然而,正则表达式并不总是最佳工具,特别是对于复杂的HTML结构,使用像BeautifulSoup这样的解析库可能更加有效和易于维护。
标签:提取,re,python,pattern,爬虫,content,正则表达式,html,findall From: https://blog.csdn.net/weixin_43822401/article/details/140550503