【问题标题】:Download data from Internet从互联网下载数据
【发布时间】:2019-08-24 18:09:06
【问题描述】:

我正在寻找某种方式(最好是不基于 Selenium)从以下链接下载数据

https://www.nseindia.com/circulars/circular.htm

我尝试在R 中使用函数XML::readHTMLTable(),但未能成功。即使我尝试查看此页面的来源,我也没有在源页面中看到相关信息。

任何使用 R 或 Python 下载数据的指针都会非常有帮助。

谢谢,

【问题讨论】:

  • 你在哪一步失败了?您是否在检索 HTML 表格或从链接下载 PDF 时失败?
  • Hi Yan,我无法检索 HTML 表格
  • 请包含您当前的代码。调试帮助请求应包含重现问题所需的最少代码。这使得它对未来搜索类似问题的读者更有用。

标签: python r web-scraping


【解决方案1】:

您正在查看的表格不在页面源中。您的浏览器运行 JavaScript 并发出额外请求以获取此表。

您可以使用开发人员工具查找该表的实际 URL,它位于 network/xhr 选项卡中。

library(rvest)
library(httr)
url <- "https://www.nseindia.com/circulars/content/circ_latest.htm"
ua <- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
response <- httr::GET(url,user_agent(ua))
html_table(content(response))

供您参考,您可以阅读此部分:

https://github.com/yusuzech/r-web-scraping-cheat-sheet#rvest7.1

【讨论】:

  • 这太棒了。还有一个问题。有没有类似的方法可以从“存档通告”页面下载历史数据?我面临的主要困难是,在您选择更长的日期范围后(例如 2019 年 1 月 1 日 - 2019 年 8 月 1 日),只有当您点击“下一步”时才会显示更多数据。
  • 是的,它基本上使用相同的方法:使用开发人员工具并在 URL 中查找模式。例如,这就是我得到的:https://www.nseindia.com/circulars/dynaContent/circular_search.jsp?qryFlag=true&amp;curPgNo=2&amp;fromDt=05-Aug-1999&amp;toDt=07-Aug-2019&amp;circlrNo=&amp;cirDept=ALL&amp;sub=&amp;time=1566672201318https://www.nseindia.com/circulars/dynaContent/circular_search.jsp?qryFlag=true&amp;curPgNo=3&amp;fromDt=05-Aug-1999&amp;toDt=07-Aug-2019&amp;circlrNo=&amp;cirDept=ALL&amp;sub=&amp;time=1566672206403
  • 您只需正确设置查询参数即可。例如(查询日期范围、圈子、当前页码、查询时间等)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多