首页 > 解决方案 > 如何提取点​​击值

问题描述

单击按钮时,我正在尝试抓取具有指向另一个网站的链接的网站。我想得到那个网站的名字。

该文件包含:

<a class = "classA" onclick = "vendors_viewWebsite('http://www.somewebsite.com', '5454')" rel="nofollow" role="button"> Visit Website </a>

我想找到<a>onclick的值,然后检查其中是否有“http:”并返回网站的URL。

有没有办法找到它?

标签: pythonseleniumbeautifulsoup

解决方案


您可以结合属性 = 值 css 选择器来定位onclick并声明onclick必须包含(*)http: 并以字符串开头vendors_viewWebsite。这希望更具选择性。为if None. 拆分出最终的网址。对于多个匹配,仅用selectselect_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]

  1. 开发者参考:css 选择器

从操作员开始

[属性^=值]

表示属性名称为 attr 的元素,其值以值作为前缀(在前)。

包含运算符

[属性*=值]

表示属性名称为 attr 的元素,其值包含字符串中至少出现一次的值。


推荐阅读