从标签python的onclick属性获取URL

我正在尝试使用 selenium python 访问标签的 onclick 属性中存在的 URL。它存在于 javascript 函数中。我已经尝试了各种技术来做到这一点,但我还没有找到解决方案。我尝试使用 execute_script 方法执行单击功能。我也尝试过 get_attribute 来获取 onclick 函数,但它没有返回。我想访问 openPopUpFullScreen 函数中的 url


这是html:


<td class="tdAction">

<div class="formResponseBtn icon-only">

<a href="#fh" onclick="javascript: openPopUpFullScreen('/esop/toolkit/negotiation/rfq/publicRfqSummaryReport.do?rfqId=rfq_229969', '');" class="openNewPage" title="Open a new window to view > View or download a Summary of this PQQ/ITT which includes details of the PQQ/ITT settings, format and questions">

<img src="/esop_custom/images/buttons/print_button.png" title="Open a new window to view > View or download a Summary of this PQQ/ITT which includes details of the PQQ/ITT settings, format and questions" alt="Open a new window to view > View or download a Summary of this PQQ/ITT which includes details of the PQQ/ITT settings, format and questions"><img src="/esop_custom/images/buttons/openNewWindow_button.png" title="(Opens in new window)" alt="(Opens in new window)">

</a>

</div>

</td>

这是python代码:


url=browser.find_element_by_xpath("//img[@title='Open a new window to view > View or download a Summary of this PQQ/ITT which includes details of the PQQ/ITT settings, format and questions']").click()

print(browser.current_url)

#it returns the previous page I am at.

这是另一个:


id=browser.find_element_by_css_selector(".openNewPage").get_attribute("onclick")

print(id)

#it returns none

我需要 openPopUpFullScreen 函数中存在的 URL,但我无法弄清楚完成此操作的正确解决方案是什么。


更新:我也尝试使用 beautifulsoup 来提取 onclick 函数,但它似乎没有出现:


这是我的代码:


content = browser.page_source.encode('utf-8').strip()

soup = BeautifulSoup(content,"html.parser")

res = soup.find("a",{"class":"openNewPage"})

print(res)

#it returns the complete tag but it does not contain onclick attribute

#i tried using this

res = soup.find("a",{"class":"openNewPage"})[onclick]

#it returns an error NameError: name 'onclick' is not defined


富国沪深
浏览 243回答 2
2回答

慕森卡

以下from bs4 import BeautifulSouphtml = '''<td class="tdAction"><div class="formResponseBtn icon-only"><a href="#fh" onclick="javascript: openPopUpFullScreen('/esop/toolkit/negotiation/rfq/publicRfqSummaryReport.do?rfqId=rfq_229969', '');" class="openNewPage" title="Open a new window to view > View or download a Summary of this PQQ/ITT which includes details of the PQQ/ITT settings, format and questions"><img src="/esop_custom/images/buttons/print_button.png" title="Open a new window to view > View or download a Summary of this PQQ/ITT which includes details of the PQQ/ITT settings, format and questions" alt="Open a new window to view > View or download a Summary of this PQQ/ITT which includes details of the PQQ/ITT settings, format and questions"><img src="/esop_custom/images/buttons/openNewWindow_button.png" title="(Opens in new window)" alt="(Opens in new window)"></a></div></td>'''soup = BeautifulSoup(html, features="lxml")a = soup.find('a')onclick = a.attrs['onclick']left = onclick.find("'")right = onclick.find("'",left+1)print('URL is: {}'.format(onclick[left+1:right]))输出URL is: /esop/toolkit/negotiation/rfq/publicRfqSummaryReport.do?rfqId=rfq_229969

繁华开满天机

对于 get_attribute:我认为您在没有“onclick”属性的情况下得到了错误的元素。您应该扩展 css 选择器并确认它只会找到一个元素。对于 current_url:您应该先切换到新窗口。尝试使用以下代码:# window_handles[-1] refer to last window created.browser.switch_to.window(browser.window_handles[-1])print(browser.current_url)&nbsp; &nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python