【发布时间】:2018-05-12 06:15:45
【问题描述】:
我正在尝试使用 rvest 从跨越多个页面的 TripAdvisor 搜索结果中抓取数据。
这是我的代码:
library(rvest)
starturl <- 'https://www.tripadvisor.co.uk/Search?q=swim+with&uiOrigin=trip_search_Attractions&searchSessionId=CA54193AF19658CB1D983934FB5C86F41511875967385ssid#&ssrc=A&o=0'
swimwith <- read_html(starturl)
swdf <- swimwith %>%
html_nodes('.title span') %>%
html_text()
它适用于结果的第一页,但我不知道如何从后续页面获取结果。我注意到 url 的末尾表示结果的开始位置,所以我将它从 '0' 更改为 '30' 如下:
url <- sub('A&o=0', paste0('A&o=', '30'), starturl)
webpage <- html_session(url)
swimwith <- read_html(webpage)
swdf2 <- swimwith %>%
html_nodes('.title span') %>%
html_text()
但是,swdf2 的结果与 swdf 相同,即使 URL 会在网络浏览器中加载结果的第二页。
知道如何从这些后续页面中获取结果吗?
【问题讨论】:
-
我认为你不会使用 Selenium 过去(即使那样我也不确定它是否会起作用)。
-
如果您开始一个新的 R 会话并尝试使用 URL:
starturl <- 'https://www.tripadvisor.co.uk/Search?q=swim+with&uiOrigin=trip_search_Attractions&searchSessionId=CA54193AF19658CB1D983934FB5C86F41511875967385ssid#&ssrc=A&o=30',会发生什么情况,您会得到第二页吗? -
我还应该补充一点,rvest 具有导航网站的功能 follow_link() 和 jump_to() 但它们在这里不起作用,因为链接是 JavaScript 按钮。
-
@Mako212 我刚刚尝试使用第二页链接开始一个新会话,但它仍然从第一页获得结果。
-
@MartinSchmelzer 你是说我需要使用 Selenium?
标签: r web-scraping tripadvisor