我正在尝试在以下网页上抓取 3 月 2 日的天气数据(R 格式):https://www.timeanddate.com/weather/sweden/stockholm/historic?month=3&year=2020我对最后的表格感兴趣,下面是“斯德哥尔摩……的天气历史记录”
该表的上方和右侧是一个下拉列表,我在其中选择了 3 月 2 日。但是当我使用 rselenium 进行抓取时,我只得到 3 月 1 日的数据。 如何获取第二个日期(以及除第一个日期之外的任何其他日期)的数据 我还尝试使用 read_html 抓取整个页面,但我找不到从中提取我想要的数据的方法。
以下代码似乎只适用于该月的第一天,但适用于该月的任何其他日期。
library(tidyverse)
library(rvest)
library(RSelenium)
library(stringr)
library(dplyr)
rD <- rsDriver(browser="chrome", port=4234L, chromever ="85.0.4183.83")
remDr <- rD[["client"]]
remDr$navigate("https://www.timeanddate.com/weather/sweden/stockholm/historic?month=3&year=2020")
webElems <- remDr$findElements(using="class name", value="sticky-wr")
s<-webElems[[1]]$getElementText()
s<-as.character(s)
print(s)
最佳答案
这是使用 RSelenium 的方法
library(RSelenium)
library(rvest)
driver <- rsDriver(browser="chrome", port=4234L, chromever ="87.0.4280.87")
client <- driver[["client"]]
client$navigate("https://www.timeanddate.com/weather/sweden/stockholm/historic?month=3&year=2020")
client$findElement(using = "link text","Mar 2")$clickElement()
source <- client$getPageSource()[[1]]
read_html(source) %>%
html_node(xpath = '//*[@id="wt-his"]') %>%
html_table %>%
head
Conditions Conditions Conditions Comfort Comfort Comfort
1 Time Temp Weather Wind Humidity Barometer Visibility
2 12:20 amMon, Mar 2 39 °F Chilly. 7 mph ↑ 87% 29.18 "Hg N/A
3 12:50 am 37 °F Chilly. 7 mph ↑ 87% 29.18 "Hg N/A
4 1:20 am 37 °F Passing clouds. 7 mph ↑ 87% 29.18 "Hg N/A
5 1:50 am 37 °F Passing clouds. 7 mph ↑ 87% 29.18 "Hg N/A
6 2:20 am 37 °F Overcast. 8 mph ↑ 87% 29.18 "Hg N/A
然后您可以迭代 findElement()
的日期。
您可以通过右键单击表格并选择“在 Chrome 中检查”来找到 xpath:
然后,您可以找到表格元素,右键单击并选择“复制”>“复制 XPath”。
关于r - 使用 R 从 timeanddate.com 抓取表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65580571/