首页 > 编程语言 >正则表达式在python爬虫中常用的方法举例

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

时间:2024-07-22 13:26:11浏览次数:14  
标签:提取 re python pattern 爬虫 content 正则表达式 html findall

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

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

相关文章

  • 使用 Python XlsxWriter 将 DatePicker 添加到 Excel 单元格中?
    我正在尝试使用PythonXlsxWriter生成的Excel创建输入表单。我想知道是否可以在Excel单元格中添加一个迷你日历(作为DatePicker)供用户输入日期?我偶然发现了Microsoft支持团队提供的本指南插入日期选择器:|||https://support.microsoft.com/en-us/office/......
  • [1037] Python operation of three keys shortcut (pynput)
    Theshortcutof win+shift+leftdoesnotworkwellin pyautogui,butitworkswellin pynput.MovingtheActiveWindowtoaDifferentMonitor: You’reright;PyAutoGUIdoesn’tdirectlysupportmovingwindowsacrossmonitorswiththeeleganceofaswan......
  • Python:定期检测断开故障的USB设备并重新初始化实例
    我有一个USB设备,有时会通过USB端口发送串行数据。问题是设备出现故障,有时会无缘无故地断开连接并再次连接到电脑。问题不大,但在这些情况下我需要重新初始化serial.Serial(port)实例,这有点烦人。该设备没有可以从我那里收到的任何命令,我可以验证它是否已连接。我可以......
  • 【校招+社招】华为OD机试 - 拼接URL(Java、JavaScript、Python、C、C++)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)算法概述URL拼接(URL拼接)是指将多个URL组件(方案、主机、端口、路径、查询参......
  • 使用 Google Colab 时,Python 包“datasets”从 virtualenv 目录“site-packages”中消
    我正在使用GoogleColab并尝试创建一个虚拟环境来工作。我的代码是:fromgoogle.colabimportdrivedrive.mount('/content/drive')!pipinstallvirtualenvmyenv_dir='/content/drive/MyDrive/virtual_env/'!virtualenv{myenv_dir}!chmod+x{myen......
  • Python 3 - openpyxl - 按名称迭代列
    使用openpyxl不按数字而是按列标题(ws第一行中的字符串值)迭代列的最简单方法是什么:如下所示:forcellinws.columns['revenue']:print(cell.value)不幸的是,openpyxl不直接支持像ws.columns['revenue']这样按列标题进行迭代。openpyxl......
  • Python selenium 网络抓取 recaptcha
    我想抓取一个网站,但在此之前有一个验证码,我什至使用api获取了数据,并且我还将其注入到网站中,因为网页没有提交按钮,我无法提交。流程是这样的,如果我解决同一网址中的验证码,隐藏的内容将被显示。但它并没有得到解决。我到处都找过了。我找不到解决方案。谁能帮我解决这个问题?......
  • Python 装饰器 详解+案例
    Python装饰器是一种特殊的函数,用于修改其他函数的功能。装饰器可以在不改变原函数代码的情况下,对函数进行增加、修改或者扩展功能。装饰器的语法形式是在函数定义前使用@符号,并在@后面加上装饰器的名称。装饰器函数接受被装饰函数作为参数,并返回一个修改后的函数。impo......
  • 如何在 vercel 部署中路由 python 和 typescript 无服务器函数
    我从一个带有Next.js和Typescript前端以及python后端的全栈应用程序开始。由于我们想在vercel上部署,因此我们将所有后端功能迁移到/api文件夹中的typescript函数中,可通过以下方式访问:fetch('api/**foldername**)问题是我有一个简单的pytorch模型,因此......
  • python中datetime模块
    datetime模块可以更方便的显示日期,并对日期进行计算。datetime模块中常用的类及其功能描述如下:datetime.datetime------>表示日期时间的类(常用)datetime.timedelta------>表示时间间隔的类(常用)datetime.date------>表示日期的类datetime.time------>表示时间的类datetime.......