我正在尝试从列出多个产品评级的网站中删除数据。所以,假设一个产品有800个品牌。因此,每页有10个品牌,我需要从8页废弃数据。例如:这是婴儿护理的数据。我需要24页的品牌 - http://www.goodguide.com/products?category_id=152775-baby-care&sort_order=DESC#!rf%3D%26rf%3D%26rf%3D%26cat%3D152775%26page%3D 1 %26filter%3D%26sort_by_type%3Drating%26sort_order%3DDESC%26meta_ontology_node_id%3D
我使用粗体字体为1,因为当我们从一个页面移动到另一个页面时,这是唯一一个在此URL中发生变化的东西。所以,我认为在R中写一个循环可能是直截了当的。但我发现,当我转到第2页时,页面不会再次加载。相反,只需在大约5秒钟内更新结果。但是,R不等待5秒,因此,我从第一页获得了26次数据。
我也尝试直接输入第2页网址并在没有循环的情况下运行我的代码。同样的故事 - 我得到了第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)
}
答案 0 :(得分:0)
参考html源代码显示您想要的网址可以简化为此结构:
http://www.goodguide.com/products?category_id=152775-baby-care&page=2&sort_order=DESC.
这些网址的内容由R按预期检索。
请注意,您也可以直接进入:
u <- sprintf('http://www.goodguide.com/products?category_id=152775-baby-care&page=%s&sort_order=DESC', n)
Parse <- htmlParse(u)