【发布时间】:2016-03-11 02:08:51
【问题描述】:
我正在努力从tripadvisor 的评论中获取日期。
我开始:
日期有两种格式:普通的 DD/MM/YYYY 格式 Opinión escrita el 21 mayo 2010 和相对日期格式 Opinión escrita hace 4 días。
'普通格式'有一个名为ratingDate的类
<span class="ratingDate">Opinión escrita el 25 octubre 2006</span>
'相对格式'有两个类ratingDate和relativeDate
<span title="6 marzo 2016" class="ratingDate relativeDate">Opinión escrita hace 4 días</span>
我正在使用 R 和 rvest 包来报废日期。
url_hotel <- "https://www.tripadvisor.es/Hotel_Review-g562819-d237083-Reviews-or150-Hotel_Riu_Don_Miguel-Playa_del_Ingles_Maspalomas_Gran_Canaria_Canary_Islands.html#REVIEWS"
html_hotel <- url_hotel %>% read_html()
这是我的问题。当我尝试使用此代码取消日期时
dates <- html_hotel %>% html_nodes(".ratingDate")
我只得到'正常日期',而没有得到其他日期。
试图找到解决方案我到达了here 但是
dates <- html_hotel %>% html_nodes(xpath="//*[contains(concat(' ', normalize-space(@class), ' '), ' ratingDate ')]")
不工作。我一直得到相同的结果。
Here 有人试图从 Tripadvisor 获取相同的数据,但使用的是 Python。他的回答都不管用
dates <- html_hotel %>% html_nodes(xpath='//div[@class="col2of2"]//span[@class="ratingDate relativeDate"/@title or @class="ratingDate"]')
有没有什么办法,设置一个好的 XPath 或其他东西,来获取 '相对日期'?
提前致谢。
【问题讨论】:
-
我猜你需要其他包:
dates <- html_nodes(".ratingDate") Error in UseMethod("xml_find_all") : no applicable method for 'xml_find_all' applied to an object of class "character"。并且...对于 R DD/MM/YYYY 不是“正常格式”,假设您期望“正常”是默认的。 -
@42 感谢您的评论。你得到一个错误,因为代码是错误的。对不起。这是我的错。它已经被纠正了。 “正常格式”只是一个名称,用于指代不是“相对日期”的日期。我可以得到这个“正常日期”并在 R 中使用它。问题是我无法得到“相对日期”。我想是一个糟糕的 Xpath。
标签: r xpath web-scraping rvest