Как использовать пост в rvest's html_session - PullRequest
0 голосов
/ 10 мая 2018

Как @ chinsoon12 упоминается в комментарии;это противоречит сроку использования TripAdvisor для очистки информации.Но я просто хотел бы знать, как использовать метод POST в rvest с этим примером.Я искал в Google и StackOverflow, но ответы не очень полезны.Любые общие предложения также приветствуются!

Вот сайт: https://www.tripadvisor.com/Hotel_Review-g33657-d85704-Reviews-Hotel_Bristol-Steamboat_Springs_Colorado.html

Итак, мне нужно нажать кнопку «еще», чтобы просмотреть полные обзоры.В противном случае это дает только частичные отзывы.

Мне удалось использовать Rselenium для симуляции кликов и получения полных обзоров, но я хочу знать, как это сделать с помощью rvest и httr.

После наблюдения сетевого трафика я обнаружил, что послеЯ нажимаю кнопку «еще», я отправил два запроса POST, перечисленных ниже:

enter image description here

enter image description here

Я попробовал этот код ниже, но тело пусто.

library(rvest)
library(httr)
url <- "https://www.tripadvisor.com/Hotel_Review-g33657-d85704-Reviews-Hotel_Bristol-Steamboat_Springs_Colorado.html"
post_to_url <-"https://www.tripadvisor.com/OverlayWidgetAjax?Mode=EXPANDED_HOTEL_REVIEWS_RESP&metaReferer="
user_agent_table <- read.csv("https://raw.githubusercontent.com/yusuzech/top-50-user-agents/master/user_agent.csv",stringsAsFactors = F)
post_body <- "reviews=556957481%2C511497076%2C556144452%2C554686822%2C548218482&contextChoice=DETAIL_HR&haveJses=earlyRequireDefine%2Camdearly%2Cglobal_error%2Clong_lived_global%2Capg-Hotel_Review%2Capg-Hotel_Review-in%2Cbootstrap%2Cdesktop-rooms-guests-dust-en_US%2Cresponsive-calendar-templates-dust-en_US%2Ctaevents&haveCsses=apg-Hotel_Review-in&Action=install"
user_agent_list <- user_agent_table$User.agent
random_agent <- function(){user_agent(sample(user_agent_list,1))}

mysession <- html_session(url,random_agent())
result <- POST(url=post_to_url,
               config=list(referer = mysession$url),
               user_agent(mysession$config$options$useragent),
               body=post_body,
               encode="raw")
result

> result
Response [https://www.tripadvisor.com/OverlayWidgetAjaxMode=EXPANDED_HOTEL_REVIEWS_RESP&metaReferer=]
Date: 2018-05-10 01:49
Status: 200
Content-Type: text/html;charset=UTF-8
<EMPTY BODY>

Я знаю, что мне нужно использовать метод POST, но я не знаю, как установить тело и другие конфигурации.Я также не уверен, нужно ли мне отправлять два почтовых запроса одновременно и как этого добиться в httr и rvest.

Любая помощь приветствуется!

...