【发布时间】:2021-06-12 05:24:25
【问题描述】:
我正在尝试抓取一个网站以获取体育统计数据,并意识到所有重要数据都在 iframe 中。我使用 driver.switch_to.frame() 切换到 iframe 并且不会引发任何错误。
frame1 = '//iframe[@src="reallylongsource"]'
driver.switch_to.frame(driver.find_element_by_xpath(frame1))
但是当我尝试访问 iframe 中的信息时,
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: .//div[@class="classname"]
被提出。我可以看到该元素在 HTML 中,但我无法用 selenium 找到它。我也尝试使用 CSS 选择器定位它,但没有成功。
我很确定它也是正确的 iframe。我尝试使用 xpath 和标签名称找到它,它们是相同的 iframe。
当我打印时
print(driver.find_element_by_xpath(frame1).text)
我只得到空格
我已经把头撞在墙上很久了,我想不通!
似乎我能够切换到正确的 iframe,但 selenium 在其中找不到任何信息。
【问题讨论】:
-
使用
document.getElementById('iframe_id').contentWindow.document.body.innerHTML;从浏览器检查检查元素控制台,其中iframe_id是您的 ID,以检查您是否获得内容。 -
你能分享那个 iframe 所在的链接吗?页面上是否有超过 1 个 iframe?如果没有,请尝试通过 drive.switch_to.frame(driver.find_element_by_tag_name('iframe')) 查找
-
@Xitrex,看起来像是带有选择器的东西..
-
不要使用 .它仅适用于子 xpath。
-
这里是页面链接:campobet.se/en/sport/prelive?sportids=66我的目标是能够选择一个游戏并继续到列出投注的页面并收集有关赔率的信息
标签: python html selenium iframe