使用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

回到顶部