如何在 R 中抓取地址更改的文件

Posted

技术标签:

【中文标题】如何在 R 中抓取地址更改的文件【英文标题】:How to webscrape a file which adress changes in R 【发布时间】:2021-03-14 14:47:32 【问题描述】:

我对这个结构不变的excel文件感兴趣:https://rigcount.bakerhughes.com/static-files/cc0aed5c-b4fc-440d-9522-18680fb2ef6a

我可以从这个页面获得:https://rigcount.bakerhughes.com/na-rig-count

最后一个网址不会随时间变化,而第一个网址会。

但我猜文件的url位于固定网页的元素中的某个地方,即使它被改变了,并且文件名的生成遵循一个重复的过程。

因此,在 R 中,有没有一种方法可以自动获取文件(大约每周更新一次),而无需每次手动下载?

【问题讨论】:

【参考方案1】:

你跳过了问题中关于你所做的事情的部分。或者在网上搜索教程。但这样做很容易。您必须查找 rvest 教程以获得更多解释。

library(rvest) # to allow easy scraping
library(magrittr) # to allow %>% pipe commands

page <- read_html("https://rigcount.bakerhughes.com/na-rig-count")

# Find links that match excel type files as defined by the page
links <- page %>%
  html_nodes("span.file--mime-application-vnd-ms-excel-sheet-binary-macroEnabled-12") %>%
  html_nodes("a")

links_df <- data.frame(
  title = links %>% html_attr("title"),
  link = links %>% html_attr("href")
)

links_df
title
# 1              north_america_rotary_rig_count_jan_2000_-_current.xlsb
# 2 north_american_rotary_rig_count_pivot_table_feb_2011_-_current.xlsb
# link
# 1 https://rigcount.bakerhughes.com/static-files/cc0aed5c-b4fc-440d-9522-18680fb2ef6a
# 2 https://rigcount.bakerhughes.com/static-files/c7852ea5-5bf5-4c47-b52c-f025597cdddf

【讨论】:

我迷失在谷歌浏览器的开发工具中,试图找到一些 json 文件,所以不太接近类似的东西。谢谢 在网络选项卡中查找数据文件是一个很好的起点。甚至可能有一个。但是这个网站非常简单,每天只有一页。所以在页面上找到一个工作的 html 类来识别会更容易。

以上是关于如何在 R 中抓取地址更改的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在R中的循环中运行(更改)JavaScript文件?

如何使用 R 和 rvest 轮换代理和 IP 地址

python爬虫:如何爬网页数据并将其放在文本

如何在 30 秒内自动更改 IP 地址?

如何使用 Powershell 从文件中递归地抓取电子邮件地址?

在 Python 中抓取网站(Futbin)时如何更改平台?