Selenium,动态内容,chrome webdriver

时间:2018-01-23 12:51:48

标签: python selenium selenium-webdriver webdriver

我正在尝试了解如何抓取一些动态网页, 但是我无法让它发挥作用。

(我目前正在玩的页面是betfair.com,在他们的实时投注中 足球页面有一个动态匹配统计页面。要查看它的实际效果,请转到 betfair.com->赔率 - > LiveBetting,点击任何足球比赛。)

它嵌入在两个iframe中,我可以使用它来访问:

frame1 = browser.find_element_by_xpath('//iframe[contains(@class, "player")]')
browser.switch_to.frame(frame1)

frame2 = browser.find_element_by_xpath('//iframe[contains(@id, "playerFrame")]')
browser.switch_to.frame(frame2)

我得到一个iframe,可以切换到它。到现在为止还挺好。 但是,当我现在尝试使用“浏览器”时, 我没有得到任何回应。

为了阅读内容,还有什么需要做的吗? 我正在尝试这样的事情:

browser.find_element_by_xpath("//div[contains(@id, 'in-game-stats')]")

上面的内部iframe确实包含了id。此外,如果我使用chrome dev工具尝试上述步骤,它确实有效。关于为什么我对上述内容没有答案的任何线索?在可用之前我是否需要等待?

1 个答案:

答案 0 :(得分:1)

frame2下面有第三个iframe,在请求in-game-stats之前选择该iframe。一起,

frame1 = browser.find_element_by_xpath('//iframe[contains(@class, "player")]')
browser.switch_to.frame(frame1)

frame2 = browser.find_element_by_xpath('//iframe[contains(@id, "playerFrame")]')
browser.switch_to.frame(frame2)

您可以尝试更好地识别最后一个iframe,在这里我要将其编入iframe2下的第一个iframe。

frame3 = browser.find_element_by_xpath('//iframe[1]')
browser.switch_to.frame(frame3)

现在您可以获得您正在寻找的节点:

browser.find_element_by_xpath("//div[contains(@id, 'in-game-stats')]")