【问题标题】:RVEST - Extracting text from table - Problems with access to the right tableRVEST - 从表格中提取文本 - 访问正确表格的问题
【发布时间】:2021-04-05 15:48:31
【问题描述】:

我想提取本网页右上角表格中的值:

https://www.timeanddate.de/wetter/deutschland/karlsruhe/klima

(Wärmster Monat:VALUE,Kältester Monat:VALUE,Jahresniederschlag:VALUE)

不幸的是,如果我使用 html_nodes("Selectorgadgets result for the specific value"),我会收到链接顶部表格的值:

https://www.timeanddate.de/stadt/info/deutschland/karlsruhe

(网页类似,如果您点击顶部栏上的“Uhrzeit/Übersicht”,您将访问第二页和表格,如果您点击“Wetter”-->“Klima”,您将访问第一页/表格(我想从中提取值的那个!)


 num_link= "https://www.timeanddate.de/wetter/deutschland/Karlsruhe/klima"


  num_page= read_html(num_link)


  rain_year = num_page %>% html_nodes("#climateTable > div.climate-month.climate-month--allyear > div:nth-child(3) > p:nth-child(1)") %>% html_text()

  temp_warm = num_page %>% html_nodes("#climateTable > div.climate-month.climate-month--allyear > div:nth-child(2) > p:nth-child(1)") %>% html_text()

  temp_cold = num_page %>% html_nodes("#climateTable > div.climate-month.climate-month--allyear > div:nth-child(2) > p:nth-child(1)") %>% html_text()
    

我得到每个变量的“字符(空)”。 :(

提前致谢!

【问题讨论】:

  • 我很困惑,因为您似乎在说您这样做并且您不想要右上角的表格。你想要顶部还是底部?

标签: html r web-scraping rvest


【解决方案1】:

你可以在rvest中使用html_table函数,现在已经很不错了。使其更容易提取,但我确实建议学习识别正确的 css 选择器,因为它并不总是有效。 html_table 总是从网页返回一个包含所有表格的列表,所以在这种情况下,步骤是:

  1. 获取html
  2. 获取表格
  3. 索引右表(这里只有一个)
  4. 重新格式化以提取值
library(rvest)
library(tidyverse)


result <- read_html("https://www.timeanddate.de/wetter/deutschland/karlsruhe/klima") %>%  
  html_table() %>% 
  .[[1]] %>% 
 rename('measurement' = 1,
        'original' = 2) %>% 
  mutate(value_num = str_extract_all(original,"[[:digit:]]+\\.*[[:digit:]]*") %>% unlist())

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多