我正在尝试了解如何抓取一些动态网页, 但是我无法让它发挥作用。
(我目前正在玩的页面是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工具尝试上述步骤,它确实有效。关于为什么我对上述内容没有答案的任何线索?在可用之前我是否需要等待?
答案 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')]")