【发布时间】:2017-12-03 14:22:27
【问题描述】:
我想从 www.airlinequality.com 页面获取一些航空公司评论,该页面提供了有关不同航班方面的信息。撰写飞行评论时,并非所有字段都是必填的。当不同的评论有不同数量的元素时,这会创建结构,这是我当前的代码无法处理的。
例如,我想从此页面获取评论: http://www.airlinequality.com/airline-reviews/austrian-airlines/page/1/
Seat Comfort 有 10 条评论,但 Inflight Entertainment 仅适用于 inf 8。最后,这会创建两个不同长度的向量,无法合并。
我的代码:
review_html_temp = read_html("http://www.airlinequality.com/airline-reviews/austrian-airlines/page/1/)
review_seat_comfort = review_html_temp %>%
html_nodes(xpath = './/table[@class = "review-ratings"]//td[@class = "review-rating-header seat_comfort"]/following-sibling::td/span[@class = "star fill"][last()]') %>%
html_text() %>%
str_replace_all(pattern = "[\r\n\t]" , "")
review_entertainment = review_html_temp %>%
html_nodes(xpath = './/table[@class = "review-ratings"]//td[@class = "review-rating-header inflight_entertainment"]/following-sibling::td//span[@class = "star fill"][last()]') %>%
html_text() %>%
str_replace_all(pattern = "[\r\n\t]" , "")
有没有办法,当所有 10 条评论都不存在节点时,我如何用“”或 NA 填充娱乐价值? 最终结果如下所示:
seat_comfort: "4" "5" "3" "3" "1" "4" "4" "3" "3" "3"
entertainment_system: "5" "1" NA "1" "1" "3" NA "3" "5" "1"
【问题讨论】:
-
答案将与我在这里学到的非常相似:stackoverflow.com/questions/41708685/…
-
我提出了一个问题,因为这似乎是
rvest中的一个共同目标,我认为文档不能很好地传达这个解决方案:github.com/hadley/rvest/issues/206
标签: r web-scraping