使用Rselenium进行网络抓取。不会返回完整信息

时间:2016-06-15 08:41:25

标签: selenium web-scraping rselenium

我想从这个网页上删除所有评论: https://www.airbnb.com/rooms/10597708

我的代码:

library('RSelenium')
library('XML')
library('RCurl')

pJS <- phantom()
shell.exec(paste0("C:\\Users\\Daniil\\Desktop\\R-language,Python\\file.bat"))
Sys.sleep(10)
checkForServer()
startServer()
remDr <- remoteDriver(browserName="chrome", port=4444)
remDr$open(silent=T)

Reviews <- remDr$findElement(using = 'id',value = 'reviews')
elem <- Reviews$getElementAttribute("outerHTML")[[1]]
elemxml <- htmlTreeParse(elem, useInternalNodes=T)
e <- xpathApply(elemxml, "//*[(@class = 'row review')]", xmlValue)

但它只返回7条可见的评论。如何提取所有评论? 一般而言,在这种情况下我应该做什么(当只有零件信息可见时)

1 个答案:

答案 0 :(得分:0)

你不能刮掉页面上没有的东西。评论以7组为单位加载。这就是为什么你得到的评论超过7条。

如果您想获得其他评论,则必须浏览评论页面。下图中的列表包含用于选择不同页面的按钮,或转到下一页。

Navigation buttons

我建议您使用循环来检查页面上是否有下一页按钮(如果它不是表示您已到达评论的最后一页)。在这个循环中,您可以从这些注释中删除数据。