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']}")

核心要点:

  1. soup.find_all(onclick=True)soup.find_all(attrs={"onclick": True})找到带onclick属性的标签
  2. 通过tag['onclick']tag.get('onclick')获取属性值字符串
  3. 用正则表达式解析字符串里的具体参数

一句话建议:find_all(onclick=True)定位,用正则表达式提取参数值。

re.findall(r ’<a.?onclick=“ showInfo(\’(.?)\’).*?>’, text)

soup.find(‘a’).attrs.get(“onclick”, “”)

正则即可

正则应该怎么写

二楼就是给你写的正则呀,而且这个用 substring 也可以

回到顶部