无法使用硒获得完整的网页

时间:2021-02-09 15:42:42

标签: selenium-webdriver web-scraping

我正在尝试使用 Selenium 下载网页,但尽管该页面超过 2MB,但 selenium 仅获取大约 140KB。使用下面的代码,在过去的 2 个月里,我能够获得完整的页面,但今天网站中的某些内容发生了变化(每天更新),导致 Selenium 无法读取完整数据。

当我使用 Chrome 的 SaveAs 保存网页时,html 文件大小超过 2MB,我能够通过将保存的 html 页面加载到 word 中来获取我正在寻找的数据。

我需要在代码中更改什么才能获得完整页面(我查看了 SO 和其他网站中的其他姿势,但没有人帮助我解决了问题)。

请注意,虽然网站要求用户点击按钮,但数据是在后台填写的,因此无需点击按钮。获取所有数据需要几秒钟,这就是为什么我的代码延迟了 30 秒:

def connectChrome():
  # set options to be headless, ..
  options = webdriver.ChromeOptions()
  options.add_argument('--headless')
  options.add_argument('--no-sandbox')
  options.add_argument('--disable-dev-shm-usage')
  
  driver = webdriver.Chrome('chromedriver', options=options)
  return driver

url = "https://datadashboard.health.gov.il/COVID-19/general"

driver = connectChrome()
driver.get(url)

sleep(30) # give time for all javascripts to run
page0 = driver.page_source

附加信息:

站点中的大部分数据都是使用 java 脚本检索的:

<script src="/COVID-19/runtime-es2015.0b1e7f45951dba4ef8a5.js" type="module"></script>
<script src="/COVID-19/runtime-es5.0b1e7f45951dba4ef8a5.js" nomodule defer></script>
<script src="/COVID-19/polyfills-es5.5b8c4276a18786f7d8e0.js" nomodule defer></script>
<script src="/COVID-19/polyfills-es2015.08f4d76337e0e6edddfe.js" type="module"></script>
<script src="/COVID-19/scripts.af32a128ae37ed86dcff.js" defer></script>
<script src="/COVID-19/main-es2015.5615c22434f8f52ad6fa.js" type="module"></script>
<script src="/COVID-19/main-es5.5615c22434f8f52ad6fa.js" nomodule defer></script></body>

0 个答案:

没有答案
相关问题