使用beautifulsoup python调用onclick事件
我正在尝试从以下网站获取指向塞浦路斯所有住宿的链接:http : //www.zoover.nl/cyprus
到目前为止,我可以检索已经显示的前15个。因此,现在我必须调用“ volgende”链接上的单击。但是我不知道该怎么做,并且在源代码中我无法跟踪使用例如sth的函数,如此处发布的内容: 使用Python中漂亮的汤在html页面上调用“单击事件”的问题
我只需要发生“单击”的步骤,这样我就可以获取接下来的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: Message: Element is no longer attached to the DOM Stacktrace: at fxdriver.cache.getElementAt (resource://fxdriver/modules/web-element-cache.js:8956) at Utils.getElementAt (file:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:8546) at fxdriver.preconditions.visible (file:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:9585) at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:12257) at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:12274) at DelayedCommand.prototype.executeInternal_ (file:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:12279) at DelayedCommand.prototype.execute/< (file:///var/folders/n4/fhvhqlmx23s8ppxbrxrpws3c0000gn/T/tmpKFL43_/extensions/fxdriver@googlecode.com/components/command-processor.js:12221)
我很困惑 :/
回答:
尽管尝试使用Beautifulsoup的evaluateJavaScript方法进行此操作很诱人,但最终,Beautifulsoup是解析器,而不是交互式Web浏览客户端。
您应该认真考虑用硒解决这个问题,如答案中简短所示。硒有很多不错的Python绑定。
您可以只使用硒来查找元素并单击它,然后将页面传递给Beautifulsoup,并使用现有代码来获取链接。
另外,您可以使用onclick处理程序中列出的Javascript。我从来源中提取了此信息:EntityQuery(‘Ns=pPopularityScore%7c1&No=30&props=15292&dims=530&As=&N=0+3+10500915’);。No每页的参数增加15 props。不过,我建议您不要使用硒,而是像客户端一样与网站进行交互。对于他们这方面的变化而言,这也更加强大。
以上是 使用beautifulsoup python调用onclick事件 的全部内容, 来源链接: utcz.com/qa/417335.html