【问题标题】:Web scraping pdf files from HTML网页从 HTML 抓取 pdf 文件
【发布时间】:2018-03-13 10:24:51
【问题描述】:

如何从 HTML 中删除 pdf 文档?我正在使用 R,我只能从 HTML 中提取文本。我要报废的网站示例如下。

https://www.bot.or.th/English/MonetaryPolicy/Northern/EconomicReport/Pages/Releass_Economic_north.aspx

问候

【问题讨论】:

  • 嗨,哦,我忘了摆出线程随附的代码。我稍后会继续。感谢您的观察。

标签: r text web-scraping tidytext


【解决方案1】:

当您说要从 HTML 页面中抓取 PDF 文件时,我认为您面临的第一个问题是实际识别这些 PDF 文件的位置。

library(XML)
library(RCurl)

url <- "https://www.bot.or.th/English/MonetaryPolicy/Northern/EconomicReport/Pages/Releass_Economic_north.aspx"
page   <- getURL(url)
parsed <- htmlParse(page)
links  <- xpathSApply(parsed, path="//a", xmlGetAttr, "href")
inds   <- grep("*.pdf", links)
links  <- links[inds]

links 包含您尝试下载的 PDF 文件的所有 URL。

当心:当你自动抓取他们的文档并被阻止时,许多网站不太喜欢它。

链接到位后,您可以开始循环浏览这些链接并逐个下载它们,并将它们保存在您的工作目录中,名称为destination。我决定根据链接为您的 PDF 提取合理的文档名称(在 url 中的最后一个 / 之后提取最后一段

regex_match <- regexpr("[^/]+$", links, perl=TRUE)
destination <- regmatches(links, regex_match)

为了避免网站服务器超载,我听说每隔一段时间暂停一次抓取很友好,因此我使用 'Sys.sleep()` 将抓取暂停时间在 0 到 5 秒之间:

for(i in seq_along(links)){
  download.file(links[i], destfile=destination[i])
  Sys.sleep(runif(1, 1, 5))
}

【讨论】:

  • 嗨,Ken S。在我尝试了很多方法来废弃页面后,这非常有效。非常感谢您的贡献。
猜你喜欢
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 2021-07-17
  • 2019-02-02
  • 1970-01-01
  • 2019-01-20
相关资源
最近更新 更多