python - 如何提取点击值
问题描述
单击按钮时,我正在尝试抓取具有指向另一个网站的链接的网站。我想得到那个网站的名字。
该文件包含:
<a class = "classA" onclick = "vendors_viewWebsite('http://www.somewebsite.com', '5454')" rel="nofollow" role="button"> Visit Website </a>
我想找到<a>
onclick的值,然后检查其中是否有“http:”并返回网站的URL。
有没有办法找到它?
解决方案
您可以结合属性 = 值 css 选择器来定位onclick
并声明onclick
必须包含(*)http:
并以字符串开头vendors_viewWebsite
。这希望更具选择性。为if None
. 拆分出最终的网址。对于多个匹配,仅用select
作select_one
返回第一个匹配。
from bs4 import BeautifulSoup as bs
html = '''
<a class = "classA" onclick = "vendors_viewWebsite('http://www.somewebsite.com', '5454')" rel="nofollow" role="button"> Visit Website </a>
'''
soup = bs(html, 'lxml')
element = soup.select_one('[onclick^=vendors_viewWebsite][onclick*=http\:]')
if element is None:
link = 'Not found'
else:
link = element['onclick'].split("'")[1]
- 开发者参考:css 选择器
从操作员开始
[属性^=值]
表示属性名称为 attr 的元素,其值以值作为前缀(在前)。
包含运算符
[属性*=值]
表示属性名称为 attr 的元素,其值包含字符串中至少出现一次的值。
推荐阅读
- python - 正则表达式匹配负后瞻、递归模式和负前瞻
- python - 选项 -s 已弃用,请使用 -video_size。未找到选项 video_size
- c# - Arduino 不向 WinForms 应用程序发送数据
- c# - 删除 DataTables SearchBuilder 中的条件
- javascript - Node.js:“无法读取未定义的属性‘toString’
- c# - 基于变量的自动映射器中的映射
- matlab - 如何从Matlab中的for循环将向量的一部分插入矩阵?
- python - 保存之前的 n 个训练权重
- reactjs - 如何在 React 应用程序中使用样式化组件
- javascript - “TypeError:events.map 不是函数”我在创建新事件时遇到此错误