抓取缺少数据的亚马逊客户评论
Scraping Amazon customer reviews with missing data
我想抓取 Amazon 客户评论,虽然如果没有 "missing" 信息我的代码可以正常工作,但如果部分数据丢失,将抓取的数据转换为数据框将不再有效(参数暗示行数不同)。
这是示例代码:
library(rvest)
url <- read_html("https://www.amazon.de/product-reviews/3980710688/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews&pageNumber=42&sortBy=recent")
get_reviews <- function(url) {
title <- url %>%
html_nodes("#cm_cr-review_list .a-color-base") %>%
html_text()
author <- url %>%
html_nodes(".author") %>%
html_text()
df <- data.frame(title, author, stringsAsFactors = F)
return(df)
}
results <- get_reviews(url)
在这种情况下,"missing"表示没有为多个客户评论提供作者信息(Ein Kunde仅表示一个客户 德文)。
有人知道如何解决这个问题吗?任何帮助表示赞赏。提前致谢!
会说这里是你问题的答案()
每个在
'div[id*=customer_review]'
然后检查作者是否有那个值。
采用 Nardack 提供的 link 方法,我可以使用以下代码抓取数据:
library(dplyr)
library(rvest)
get_reviews <- function(node){
r.title <- html_nodes(node, ".a-color-base") %>%
html_text()
r.author <- html_nodes(node, ".author") %>%
html_text()
df <- data.frame(
title = ifelse(length(r.title) == 0, NA, r.title),
author = ifelse(length(r.author) == 0, NA, r.author),
stringsAsFactors = F)
return(df)
}
url <- read_html("https://www.amazon.de/product-reviews/3980710688/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews&pageNumber=42&sortBy=recent") %>% html_nodes("div[id*=customer_review]")
out <- lapply(url, get_reviews) %>% bind_rows()
我想抓取 Amazon 客户评论,虽然如果没有 "missing" 信息我的代码可以正常工作,但如果部分数据丢失,将抓取的数据转换为数据框将不再有效(参数暗示行数不同)。
这是示例代码:
library(rvest)
url <- read_html("https://www.amazon.de/product-reviews/3980710688/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews&pageNumber=42&sortBy=recent")
get_reviews <- function(url) {
title <- url %>%
html_nodes("#cm_cr-review_list .a-color-base") %>%
html_text()
author <- url %>%
html_nodes(".author") %>%
html_text()
df <- data.frame(title, author, stringsAsFactors = F)
return(df)
}
results <- get_reviews(url)
在这种情况下,"missing"表示没有为多个客户评论提供作者信息(Ein Kunde仅表示一个客户 德文)。
有人知道如何解决这个问题吗?任何帮助表示赞赏。提前致谢!
会说这里是你问题的答案(
每个在
'div[id*=customer_review]'
然后检查作者是否有那个值。
采用 Nardack 提供的 link 方法,我可以使用以下代码抓取数据:
library(dplyr)
library(rvest)
get_reviews <- function(node){
r.title <- html_nodes(node, ".a-color-base") %>%
html_text()
r.author <- html_nodes(node, ".author") %>%
html_text()
df <- data.frame(
title = ifelse(length(r.title) == 0, NA, r.title),
author = ifelse(length(r.author) == 0, NA, r.author),
stringsAsFactors = F)
return(df)
}
url <- read_html("https://www.amazon.de/product-reviews/3980710688/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews&pageNumber=42&sortBy=recent") %>% html_nodes("div[id*=customer_review]")
out <- lapply(url, get_reviews) %>% bind_rows()