【发布时间】:2021-11-29 13:59:08
【问题描述】:
自从 5 年前用户 hrbrmstr 回答了我的 this question 以来,我一直在成功地从该网站上抓取一张表格。最近网站发生了一些变化,我无法再获取数据。
URL <- "http://www.fiskistofa.is/veidar/aflaupplysingar/landanir-eftir-hofnum/"
library(httr)
library(rvest)
res <- POST(url = URL,
query = list(lang="is"),
body = list(magn = "Sundurlidun",
hofn = "87",
dagurFra = format(lubridate::today()-4, "%d.%m.%Y"),
dagurTil = format(lubridate::today(), "%d.%m.%Y"),
hnappur = "Sækja"),
encode = "form")
doc <- content(res, as="parsed")
这就是我以前能够找到并提取表格的方式,但现在输出为空:
html_nodes(doc, xpath=".//table[contains(., 'Magn')]") %>%
html_table(header=TRUE)
网站的外观没有任何改变,但最近他们为这个数据库打开了这个Power BI(表格在第 3 页),所以他们可能同时改变了一些我不知道的东西.
有什么建议吗?
【问题讨论】:
-
hofn = "87"代表什么?当我在我的开发工具中查看它时,它看起来是hofn = "75" -
它是可以选择的众多港口之一。
-
lubridate::today()以什么形式/格式给出?是"DD.MM.YYYY"吗? -
不确定在 R 中使用有什么问题。它在我的 Python 环境中运行良好。我唯一能想到的是,有时您需要在标题中包含
user-agent,例如user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36。但不确定使用 R 执行此操作的语法 -
好的,这可能是问题所在。它可能需要采用
"DD.MM.YYYY"的特定形式。因为如果我在 python 中尝试这种方式,其他形式将不起作用
标签: r web-scraping