【问题标题】:How to scrape a react table when there are no table tags没有表格标签时如何抓取反应表格
【发布时间】:2022-01-15 05:57:23
【问题描述】:

我正试图从这个link 中删除表格。页面上没有表格标签,所以我尝试使用“rt-table”类访问它。当我在开发人员工具中检查表格时,我可以在元素部分看到我需要的 html(我使用的是 Chrome)。但是,当我使用请求查看源代码时,现在缺少这部分代码。有谁知道可能是什么问题?

【问题讨论】:

  • requests 不运行 Javascript。使用selenium
  • 你怎么知道这个表使用了javascript?
  • 因为你在requests源码中看不到它,它不执行JS,但是在浏览器执行页面中的JS之后,它在Chrome中。
  • 通过在浏览器的开发工具中检查网络跟踪,您可以看到对nhl.com/stats/teams?aggregate=... 的请求没有返回表的内容。这意味着表格内容是通过后续请求加载的
  • 直接查询api即可

标签: python html web-scraping beautifulsoup python-requests


【解决方案1】:

如果您只想要这些统计信息,您可以像这样访问隐藏的 api:

import requests
import pandas as pd

url = f'https://api.nhle.com/stats/rest/en/team/summary?isAggregate=false&isGame=true&sort=%5B%7B%22property%22:%22points%22,%22direction%22:%22DESC%22%7D,%7B%22property%22:%22wins%22,%22direction%22:%22DESC%22%7D,%7B%22property%22:%22teamId%22,%22direction%22:%22ASC%22%7D%5D&start=0&limit=100&factCayenneExp=gamesPlayed%3E=1&cayenneExp=gameTypeId=2%20and%20seasonId%3C=20072008%20and%20seasonId%3E=20072008'
data = requests.get(url).json()

df = pd.DataFrame(data['data'])
df.to_csv('nj devils data.csv',index=False)

要查看我从哪里获得该 URL,请转到您尝试在浏览器中抓取的页面,然后打开开发者工具 - 网络 - 获取/XHR 并点击刷新,如果您点击,您会看到一堆网络请求发生在它们上,您可以在“预览”选项卡中探索数据返回。这可以像上面那样重新创建。情况并非总是如此,有时您需要发送某些标头或信息负载来验证对 api 的请求,但在这种情况下它很容易工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 2018-02-28
    • 1970-01-01
    • 2015-09-08
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多