首页 > 解决方案 > 如何在使用 rvest 在 R 中抓取之前指定日期?

问题描述

酒店房价因入住和退房日期而异。因此,刮取的费率应取决于指定的日期。

我是网络抓取的新手,并尝试在 R 中运行一个简单的脚本来抓取 TripAdvisor 上特定酒店的房价。

library(rvest)
url <- "https://www.tripadvisor.com/Hotel_Review-g60971-d75749-Reviews-Little_America_Hotel_Flagstaff-Flagstaff_Arizona.html"
page <- read_html(url)
rate <- html_nodes(page, ".bb_price_text")
print(rate)

输出让我感到惊讶。我今天在几分钟内获得了三种不同的费率,尽管当我使用浏览器访问 URL 时,只有其中一种费率(199 美元)始终在线显示(带删除线的在线显示金额为 216 美元)。

#{xml_nodeset (1)}
#[1] <div class="bb_price_text  hasStrikeThrough">$189</div>

#{xml_nodeset (1)}
#[1] <div class="bb_price_text  hasStrikeThrough ">$199</div>

#{xml_nodeset (1)}
#[1] <div class="bb_price_text ">$259</div>

我猜不同的费率对应不同的入住和退房日期。要知道哪些日期对应于被抓取的速率,我执行了以下代码。

dates <- html_nodes(page, ".picker-count")
print(dates)

这在 5 月 29 日和 5 月 30 日返回。

#{xml_nodeset (2)}
#[1] <span class="picker-count">May 29</span>
#[2] <span class="picker-count">May 30</span>

显示三种不同费率的事实意味着脚本循环通过三组不同的入住和退房日期。如何?是否可以在抓取之前在 R 中以编程方式设置这些日期?

非常感谢任何见解或帮助!

标签: rweb-scrapingdatepickerrvest

解决方案


虽然我还不知道如何更改日期。价格差异不是由于日期的差异。我使用随机用户代理和随机代理测试了该网页。它给了我不同的价格。

所以它可能是 TripAdvisor 的价格歧视或 AB 测试。


推荐阅读