r - 如何在使用 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 中以编程方式设置这些日期?
非常感谢任何见解或帮助!
解决方案
虽然我还不知道如何更改日期。价格差异不是由于日期的差异。我使用随机用户代理和随机代理测试了该网页。它给了我不同的价格。
所以它可能是 TripAdvisor 的价格歧视或 AB 测试。
推荐阅读
- c - 如何使用单个指针从链表中删除节点?
- r - 查找有航班连接的机场
- gcloud - 无法安装 gcloud SDK
- security - 为什么无法从 AppSettings.json 加载 ASP.NET Core AddDataProtection Keys
- java - 在 Java 中解析 .proto 文件
- javascript - 使用回调查询多个 Promise
- ios - SwiftUI 使用 EnvironmentObject 作为我的 ViewModel 的模型
- firebase - 如何限制用户在 Firebase 实时数据库中上传一定数量的数据
- javascript - 计算画布中两个“像素斑点”之间的最小距离
- azure-machine-learning-service - Influx DB 作为 MLS 的源作为直接连接