使用R从连续URL抓取Web

使用R从连续URL抓取Web,r,R,我试图从一个网站上删除数据,该网站列出了多种产品的评级。那么,假设一个产品有800个品牌。因此,由于每页有10个品牌,我需要从8页中删除数据。这是婴儿护理的数据。我需要24页的品牌-1%26过滤器%3D%26按类型排序%3Drating%26排序顺序%3DDESC%26meta\U本体论\U节点\U id%3D 我已经使用了粗体字体1,因为这是唯一的事情,改变了这个网址,因为我们从一页到另一页。所以,我认为在R中写一个循环可能是直截了当的。但我发现,当我移动到第2页时,页面不会再次加载。相反,只

我试图从一个网站上删除数据,该网站列出了多种产品的评级。那么,假设一个产品有800个品牌。因此,由于每页有10个品牌,我需要从8页中删除数据。这是婴儿护理的数据。我需要24页的品牌-1%26过滤器%3D%26按类型排序%3Drating%26排序顺序%3DDESC%26meta\U本体论\U节点\U id%3D

我已经使用了粗体字体1,因为这是唯一的事情,改变了这个网址,因为我们从一页到另一页。所以,我认为在R中写一个循环可能是直截了当的。但我发现,当我移动到第2页时,页面不会再次加载。相反,只需在大约5秒钟内更新结果。然而,R并没有等待5秒,因此,我从第一页获得了26次数据

我还尝试直接输入第2页的url,并在没有循环的情况下运行代码。同样的故事-我得到了第1页的结果。我相信我不会是唯一一个面对这一切的人。感谢您的帮助。我已附上代码

非常感谢。我希望我的问题足够清楚

# build the URL

N<-matrix(NA,26,15)
R<-matrix(NA,26,60)

for(n in 1:26){

url <- paste("http://www.goodguide.com/products?category_id=152775-baby-care&sort_order=DESC#!rf%3D%26rf%3D%26rf%3D%26cat%3D152775%26page%3D",i,"%26filter%3D%26sort_by_type%3Drating%26sort_order%3DDESC%26meta_ontology_node_id%3D")


raw.data <-readLines(url)

Parse <- htmlParse(raw.data)

#####
A<-querySelector(Parse, "div.results-container")

#####
Name<-querySelectorAll(A,"div.reviews>a")
Ratings<-querySelectorAll(A,"div.value")

N[n,]<-sapply(Name,function(x)xmlGetAttr(x,"href"))
R[n,]<-sapply(Ratings,xmlValue)
}

参考html源代码可以发现,您想要的URL可以简化为以下结构:

http://www.goodguide.com/products?category_id=152775-婴儿护理&page=2&sort\u orde‌​r=描述

这些URL的内容按预期由R检索

请注意,您也可以直接转到:

u <- sprintf('http://www.goodguide.com/products?category_id=152775-baby-car‌​e&page=%s&sort_order=DESC', n)
Parse <- htmlParse(u)

你总是可以在两次通话之间做一些调整。这就是我最后从Qualys实验室抓取数据所做的。你的迭代器是n,但你在构建url时粘贴了I。谢谢jbaums,更正了它,但仍然不起作用:是的,我并不是说这是你唯一的问题;谢谢你。我会试试这个。它奏效了:谢谢。你能告诉我你是如何找到第2页的html源代码的吗。我对这个非常陌生,我想学习。抱歉问了这么多问题。@user3728332:我想我有点幸运-我在源代码中搜索了“页面”和“分页”。我认为页面按钮会动态地向原始url添加一些GET参数,可能是过滤导致页面像那样结巴。