r - 使用 R 从 timeanddate.com 抓取表格

标签 r web-scraping rselenium

我正在尝试在以下网页上抓取 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: enter image description here

然后,您可以找到表格元素,右键单击并选择“复制”>“复制 XPath”。

关于r - 使用 R 从 timeanddate.com 抓取表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65580571/

相关文章:

r - 计算大型数据集的多个固定效应

python - 使用 Mechanize 填写和提交表格

python - 如何提取其中包含特定元素的所有 div,它不是 class、span、a 或 li?

javascript - 从 php url 获取可下载二进制文件的文件名,而不实际下载文件

r - 使用 Rselenium 和 PhantomJS 设置视口(viewport)大小

r - slice_plot() 找不到函数错误

r - 将列表转换为是/否的数据框

r - 使 ggplot2 图例水平和一行

r - 使用 RSelenium 时 Chrome 挂起/自关闭(使用 R)

Windows 上的 RSelenium 问题与 startServer()