【问题标题】:How to scrape a hidden element如何刮掉隐藏的元素
【发布时间】:2021-03-17 23:32:21
【问题描述】:

我正在尝试在https://steamdb.info/app/730/graphs/ 的以下元素下抓取 tbody。 (我获得了抓取许可)

<div id="chart-month-breakdown" class="table-responsive">

但是,当尝试抓取内容或通过 Selenium 访问它时,我不能,因为它看起来像这样:

<div id="chart-month-breakdown" class="table-responsive" hidden="">

“隐藏”标签仅在我手动浏览页面时才会消失,因此无法通过 requests.get 抓取。

有没有办法获取内容?

【问题讨论】:

  • 现在请检查答案。它工作正常。

标签: python selenium web-scraping beautifulsoup web-crawler


【解决方案1】:

如果您擅长统计数据,以下是该表使用的所有统计数据。他们从 api 获取表数据。您可以使用以下命令直接进行 api 调用:

import requests
headers = {'referer': 'https://steamdb.info/app/730/graphs/','x-requested-with': 'XMLHttpRequest','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
a = requests.get('https://steamdb.info/api/GetGraph/?type=concurrent_week&appid=730',headers = headers).text
print(a)

如果您使用的是硒。我尝试将隐藏更改为无,这让我获得了所有数据。您可以使用 selenium javascript 使该 div id 可见。你可以试试这样:

javaScript = "document.getElementById('chart-month-breakdown').removeAttribute('hidden');"
driver.execute_script(javaScript)
time.sleep(3) # To let the data poplulate

【讨论】:

  • 尝试添加用户代理,但没有成功;你试过代码了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
相关资源
最近更新 更多