背景 我目前正在使用 rvest 从 R 中的一些网站抓取产品信息。这适用于除一个网站之外的所有网站,其中内容似乎是通过 angularJS (?) 动态加载的,因此无法通过 URL 参数等方式迭代加载(就像我对其他网站所做的那样)。具体网址如下:
http://www.hornbach.de/shop/Badarmaturen/Waschtischarmaturen/S3584/artikelliste.html
请记住,我在我的机器上没有管理员权限,只能实现不需要或只需要一次性授予管理员权限的解决方案
所需的输出 最后是一个包含产品信息(例如标签、价格、评级)的 R 表 => 不过,在这个问题中,我纯粹需要帮助来动态加载和存储网站;我可以自己处理 R 中的后处理。如果你能把我推向正确的方向,那就太好了;也许我下面列出的方法之一在正确的轨道上,但我似乎无法将它们转移到指定的网站。
目前的方法 我发现 phantomJS 作为一个无头浏览器,afaik 应该能够处理这个问题。我几乎对 Java Script 一无所知,而且语法(至少对我而言)与我更习惯的语言(R、Matlab、SQL)有很大不同,我真的很难实现在其他地方建议的可能适用的方法我的代码。基于此示例(非常感谢),我设法使用以下代码从第一个显示的页面中至少检索到信息:
回复:
require(rvest)
## change Phantom.js scrape file
url <- 'http://www.hornbach.de/shop/Badarmaturen/Waschtischarmaturen/S3584/artikelliste.html'
lines <- lines <- readLines("scrape_final.js")
lines[1] <- paste0("var url ='", url ,"';")
writeLines(lines, "scrape_final.js")
## Download website
system("phantomjs scrape_final.js")
### use Rvest to scrape the downloaded website.
web <- read_html("1.html")
content <- html_nodes(web, 'div.paging-indicator')# %>% html_attr('href')
content <- html_text(content) …Run Code Online (Sandbox Code Playgroud)