-3

R の Rvest パッケージを使用して、このホテルのメイン ページからすべてのユーザー レビューをスクレイピングしたいと考えています。

最初の 10 件のレビューしか取得できません。JavaScript によって生成される [もっと見る] ボタンをクリックすると、次の一連のレビューが読み込まれます。

私は次の JavaScript を書きました - 「basic.js」:

var webPage = require('webpage');
var page = webPage.create();

var fs = require('fs');
var path = 'taj.html'

page.open('http://www.holidayiq.com/Taj-Exotica-Benaulim-hotel-2025.html', function (status) {
  var content = page.content;
  fs.write(path,content,'w')
  phantom.exit();
});   

次に、Rで次のコマンドを使用しました:

system("./phantomjs basic.js")

出力された「taj.html」ファイルには、すべてのレビューが含まれているわけではありません。それで、スクレイプコード...

pg <- read_html("taj.html")
pg %>% html_nodes(".detail-review-by-hotel .srm") %>% html_node(".media-heading") %>%   html_text()

... 最初の 10 件のレビューのみを返します。

4

1 に答える 1

1

RSelenium を使用します。

library(RSelenium)
checkForServer() #just the first time
startServer()
startServer(invisible = FALSE, log = FALSE)
remDr <- remoteDriver(remoteServerAddr = "localhost" 
                  , port = 4444
                  , browserName = "chrome"
)
remDr$open()

ページに移動する

remDr$navigate("http://www.holidayiq.com/Taj-Exotica-Benaulim-hotel-2025.html")

押すものがあるまで「もっと見る」ボタンをクリックします(完了したら、手動で実行を停止します)

while(TRUE){
webElem <- remDr$findElement(using = 'css selector', "#loadMoreTextReview")
remDr$mouseMoveToLocation(webElement = webElem) # move mouse to the element we selected
remDr$click(1) # 2 indicates click the right mouse button
}

css セレクターを使用して必要なものをすべてスクレイピングします (構文は Rvest に似ています)。

namesNodes <- remDr$findElements(using = 'css selector', "#result-items .media-heading")
names<-unlist(lapply(namesNodes, function(x){x$getElementText()}))

firstCommentNodes <- remDr$findElements(using = 'css selector', ".featured-blog-clicked") # the second element is the css selector
firstComment<-unlist(lapply(firstCommentNodes, function(x){x$getElementText()}))

reviewNodes <- remDr$findElements(using = 'css selector', ".detail-posted-txt p") # the second element is the css selector
review<-unlist(lapply(reviewNodes, function(x){x$getElementText()}))

css パスを選択する方法を理解するためにセレクタ ガジェット ビネットを読むことをお勧めします -> ftp://cran.r-project.org/pub/R/web/packages/rvest/vignettes/selectorgadget.html

于 2016-03-23T01:38:51.817 に答える