gpt4 book ai didi

javascript - 使用 beautifulsoup python 调用 onclick 事件

转载 作者:太空狗 更新时间:2023-10-30 02:10:32 25 4
gpt4 key购买 nike

我正在尝试从该网站获取指向塞浦路斯所有住宿的链接: http://www.zoover.nl/cyprus

到目前为止,我可以检索已显示的前 15 个。所以现在我必须调用“volgende”链接上的点击。但是我不知道该怎么做,并且在源代码中我无法找到调用的函数,例如像张贴在这里: Issues with invoking "on click event" on the html page using beautiful soup in Python

我只需要发生“点击”的步骤,这样我就可以获取接下来的 15 个链接,依此类推。

有人知道怎么帮忙吗?已经谢谢了!

编辑:

我的代码现在看起来像这样:

def getZooverLinks(country):
zooverWeb = "http://www.zoover.nl/"
url = zooverWeb + country
parsedZooverWeb = parseURL(url)
driver = webdriver.Firefox()
driver.get(url)

button = driver.find_element_by_class_name("next")
links = []
for page in xrange(1,3):
for item in parsedZooverWeb.find_all(attrs={'class': 'blue2'}):
for link in item.find_all('a'):
newLink = zooverWeb + link.get('href')
links.append(newLink)
button.click()'

我收到以下错误:

selenium.common.exceptions.StaleElementReferenceException:消息:元素不再附加到 DOM堆栈跟踪: 在 fxdriver.cache.getElementAt(资源://fxdriver/modules/web-element-cache.js:8956) 在 Utils.getElementAt(文件:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:8546) 在 fxdriver.preconditions.visible(文件:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:9585) 在 DelayedCommand.prototype.checkPreconditions_(文件:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:12257) 在 DelayedCommand.prototype.executeInternal_/h(文件:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:12274) 在 DelayedCommand.prototype.executeInternal_(文件:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:12279) 在 DelayedCommand.prototype.execute/< (file:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:12221)

我很困惑:/

最佳答案

虽然使用 Beautifulsoup 的 evaluateJavaScript 方法尝试这样做可能很诱人,但最终 Beautifulsoup 是一个 parser而不是交互式网络浏览客户端。

您应该认真考虑使用 Selenium 来解决这个问题,如 this answer 中简要介绍的那样.有挺不错的Python bindings可用于 Selenium 。

您可以只使用 selenium 找到元素并单击它,然后将页面传递给 Beautifulsoup,并使用您现有的代码来获取链接。

或者,您可以使用 onclick 处理程序中列出的 Javascript。我从源代码中提取了这个:EntityQuery('Ns=pPopularityScore%7c1&No=30&props=15292&dims=530&As=&N=0+3+10500915');No 参数每页递增 15,但 props 让我猜测。不过,我建议不要参与其中,而只是像客户那样使用 selenium 与网站进行交互。这对于他们这边的变化也更加稳健。

关于javascript - 使用 beautifulsoup python 调用 onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29385156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com