我尝试使用Python和Selenium从一个网站上动态地抓取加载的数据。问题是,只有大约一半的数据被报告为当前数据,而实际上所有数据都应该存在。即使在打印出所有页面内容之前使用暂停,或者简单地逐类查找元素,似乎也没有解决方案。站点的URL是https://www.sportsbookreview.com/betting-odds/nfl-football/consensus/?date=20180909。如你所见,有13个主要部分,但是我只能从前四个游戏检索数据。为了更好地显示问题,我将附加整个页面的内部HTML打印代码,以显示加载和未加载数据之间的差异。在
from selenium import webdriver
import requests
url = "https://www.sportsbookreview.com/betting-odds/nfl-football/consensus/?date=20180909"
driver = webdriver.Chrome()
driver.get(url)
print(driver.execute_script("return document.documentElement.innerText;"))
编辑: 问题不在于等待时间,因为我正在逐行运行它并完全等待它加载。问题似乎可以归结为selenium没有获取页面上所有JS加载的文本,如下面的答案中的控制台输出所示。在
@sudonym的分析是正确的。在尝试通过
execute_script()
方法提取所需的元素之前,需要诱导WebDriverWait,如下所示:代码块:
控制台输出:
你需要一些时间来完全加载html。此外,还可以为脚本执行设置timeout。要在selenium中添加对}和循环:
driver.get(URL
)的无条件等待,driver.set_page_load_timeout(n)
与{相关问题 更多 >
编程相关推荐