自学内容网 自学内容网

正则表达式在python爬虫中常用的方法举例

在爬虫中,正则表达式被广泛用于从网页中提取特定信息。以下是一些常用的正则表达式方法举例,以及它们在爬虫中的典型应用场景:

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这样的解析库可能更加有效和易于维护。


原文地址:https://blog.csdn.net/weixin_43822401/article/details/140550503

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!