【问题标题】:How to scrape a table of data from an AJAX-heavy website? [closed]如何从 AJAX 繁重的网站中抓取数据表? [关闭]
【发布时间】:2018-12-30 22:29:41
【问题描述】:

我想从this 权益表中抓取实时数据并将其粘贴到 Excel 文件中

我尝试过使用 Python 的 beautifulsoup4 包,但是,数据并不直接驻留在页面 html 中,而是似乎使用一些 javascript 或类似的方式加载

【问题讨论】:

  • 在csv中下载选项。
  • 我知道,但我想为表格提取实时数据,在这种情况下,下载 csv 选项是无用的,因为它会为您提供历史数据
  • @EvanStrom beautifulsoup(或 R 的 rvest 包)是从网站抓取数据的好方法。但是,在查看页面 html 后,我可以看到数据本身不在页面 html 中。我怀疑它是通过一些 AJAX 请求加载的。我不知道如何抓取它,但this 可能会有所帮助。我不想让你气馁,但我怀疑这可能相当困难,除非你知道一些 javascript/AJAX/jQuery 或有人帮助你

标签: javascript python r ajax web-scraping


【解决方案1】:

这是怎么做的

在 chrome 中打开页面。现在在 chrome 中打开开发者控制台。单击“网络”选项卡。现在刷新页面。

此选项卡显示您提出的请求(您可以看到大约 8 个左右的项目)。

人工检查为我们提供了我们想要的:

https://www.nseindia.com/live_market/dynaContent/live_watch/stock_watch/niftyStockWatch.json

这是数据所在的链接。

现在,要将其转换为 csv(可以在 excel 中打开),请使用 R 的 rvest 包:

library(rvest)
library(jsonlite)

url <- "https://www.nseindia.com/live_market/dynaContent/live_watch/stock_watch/niftyStockWatch.json"
page_html <- read_html(url)
data <- html_nodes(page_html, "p")
data <- html_text(data)

data <- fromJSON(data)
write.csv(data$data, "scrapedData.csv", row.names=FALSE)

如果您希望这是“实时”数据,则可以(例如)5 秒间隔运行一次抓取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多