【发布时间】:2020-08-14 16:17:01
【问题描述】:
请注意,我对 R 和 R 本身的网络抓取非常陌生,因此在解释响应时请注意这一点...
我正在尝试网络抓取逗留日期、评论标题和评论
这是我生成要使用的 URL 列表的地方:
library(rvest)
#GENERATING THE URLS
webpage_list <- vector(mode = "list")
#creating empty list
webpage_list
for(n in seq(from=5, to=15, by=5)){
webpage_list[[n]] <- glue::glue("https://www.sampleURL.com#REVIEWS")
}
#droping the empty values
webpage_list[sapply(webpage_list,is.null)] <- NULL
webpage_list
然后将列表转换为字符向量并遍历开始识别我要抓取的网页上的区域
webpage_list2 <- unlist(webpage_list)
class(webpage_list2)
for(i in seq_along(webpage_list2)){
webpage <- read_html(webpage_list2[i])
results <- webpage %>% html_nodes(".oETBfkHU , ._3hDPbqWO")
print(results)
# Building the dataset
records <- vector("character", length = (length(results)))
print(records)
}
到目前为止,似乎一直在按我的意愿工作(我认为)
for (x in seq_along(results)) {
url <- read_html(webpage_list2[x])
dateOfStay <- str_c(url %>%
html_nodes("._34Xs-BQm") %>%
html_text())
reviewTitle <- str_sub(url %>%
html_nodes(".glasR4aX")%>%
html_text())
review <- str_sub(url %>%
html_nodes(".IRsGHoPm") %>%
html_text())
records[[x]] <- data_frame(dateOfStay = dateOfStay, reviewTitle = reviewTitle, review = review)#, reviewTitle = reviewTitle, review = review
}
#Build DF
DF <- bind_rows(records)
由此我得到以下错误:
Error in records[[x]] <- data_frame(dateOfStay = dateOfStay, reviewTitle = reviewTitle, : more elements supplied than there are to replace
任何帮助将不胜感激,也请注意,我对 R 和 R 本身的网络抓取非常陌生,因此在解释响应时请注意这一点。
【问题讨论】:
-
仅供参考:您可能难以获得此特定问题的答案,因为tripadvisor 在其服务条款和robots.txt 中禁止抓取。
-
@AdamSampson 我不知道!谢谢你让我知道。这纯粹是为了我正在做的大学作业(我知道这无关紧要)。由于使用了众多 URL,无论在哪里被抓取,是否有办法绕过错误?
-
是的。您的问题实际上是我无需刮擦即可解决的问题。所以我不必担心回答中的服务条款。
标签: r web-scraping rvest rscript