Python新手如何使用BeautifulSoup获取onclick属性信息?
大神们好,我已经将某页面进行格式化处理,将所需要的内容格式化成<a href="javascript:void(0)" onclick="showInfo('XXXXXXXXXXXXXXX'),但是我想获取到 onclick 内的所有 XXXXXXXXXXXX 的字符串信息,这个应该怎么操作,谢谢
Python新手如何使用BeautifulSoup获取onclick属性信息?
7 回复
from bs4 import BeautifulSoup
import re
# 示例HTML
html = '''
<button onclick="showDetails('user123', 'profile')">查看详情</button>
<a href="#" onclick="return confirm('确定删除吗?')">删除</a>
<div onclick="handleClick(event, {id: 456})">点击区域</div>
'''
soup = BeautifulSoup(html, 'html.parser')
# 方法1:直接获取属性值
for tag in soup.find_all(onclick=True): # 查找所有有onclick属性的标签
print(f"标签: {tag.name}")
print(f"onclick值: {tag['onclick']}")
print("-" * 30)
# 方法2:提取特定参数(使用正则表达式)
button = soup.find('button')
if button and button.get('onclick'):
onclick_value = button['onclick']
# 提取函数参数
match = re.search(r"showDetails\('([^']+)',\s*'([^']+)'\)", onclick_value)
if match:
user_id, action = match.groups()
print(f"提取的参数: user_id={user_id}, action={action}")
# 方法3:获取所有元素的onclick
all_elements = soup.find_all(attrs={"onclick": True})
for elem in all_elements:
print(f"{elem.name}: {elem['onclick']}")
核心要点:
- 用
soup.find_all(onclick=True)或soup.find_all(attrs={"onclick": True})找到带onclick属性的标签 - 通过
tag['onclick']或tag.get('onclick')获取属性值字符串 - 用正则表达式解析字符串里的具体参数
一句话建议: 用find_all(onclick=True)定位,用正则表达式提取参数值。
re.findall(r ’<a.?onclick=“ showInfo(\’(.?)\’).*?>’, text)
soup.find(‘a’).attrs.get(“onclick”, “”)
正则即可
正则应该怎么写
二楼就是给你写的正则呀,而且这个用 substring 也可以

