使用xpath

时间:2016-03-11 02:08:52

标签: r xpath web-scraping rvest

我正在努力从tripadvisor的评论中获取日期。

我开始时:

https://www.tripadvisor.es/Hotel_Review-g562819-d237083-Reviews-or150-Hotel_Riu_Don_Miguel-Playa_del_Ingles_Maspalomas_Gran_Canaria_Canary_Islands.html#REVIEWS

日期有两种格式:普通的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>

'相对格式'有两个类ratingDaterelativeDate

<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或其他什么来获得'相对日期'

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是我的猜测,但由于我们不共享区域设置,因此您的日期拼写与我的日期拼写不同,并且代码在我的区域设置中提供NA,但请尝试此操作(基于我怀疑的正确日期格式)你的语言环境:

 dates %>%
   html_attr("title") %>%
   strptime("%d %B %Y") %>%
   as.POSIXct()

取自https://github.com/hadley/rvest/blob/master/demo/tripadvisor.R