簡體   English   中英

使用 rvest 將 HTML 讀入 R 數據幀

[英]Reading HTML into an R data frame using rvest

我正在嘗試使用 rvest 從https://homicides.news.baltimoresun.com/recent/抓取數據,並將有關受害者的信息放入 data.table 或框架中。

到目前為止我所擁有的是:

html <- read_html(x = "https://homicides.news.baltimoresun.com/recent/")
html_node(html, ".recentvictims") %>% 
    html_children() %>% 
    head() %>% 
    html_text2()

這給了我一個信息列表,但我找不到將其放入數據框中的方法。

[1] "日期和時間\n受害者姓名\n地址\n年齡\n性別\n種族"
[2] “09/26/2022 7:15 pm\n\n1900 Griffis Ave\n—\n男性\n未知”
[3] “09/21/2022 1:45 pm\nKelly Logan\n2100 Kloman St\n53\n女性\n黑人”
[4] “09/20/2022 9:00 am\nDelon Bushrod\n2800 Bookert Dr\n24\n男性\n黑人”
[5] “09/19/2022 8:06 pm\nTerry Gordon\n1600 N Wolfe St\n53\nMale\nBlack”
[6] “09/16/2022 9:43 am\nDelanie McCloud\n100 Wilmott Court\n37\n男性\n黑人”

我也試過在“.recentelements”下選擇 html 元素

minimal_html(html) %>% 
    html_element(".recentvictims") 

這給了我:

[1] <div class="lfrow">\n <div class="lfdate">\n <b>日期和時間\n </div>\n...
[2] <div class="lfrow odd">\n <div class="lfdate">\n <a href="/victim/4597/">\n...
[3] <div class="lfrow even">\n <div class="lfdate">\n <a href="/victim/4595/">\n...

我想獲取“lfrow even”和“lfrow odd”類下的所有信息

有什么建議么? 謝謝

為了將您的 output 放入數據框中,我將as.data.frame()添加到您的第一段代碼中,該代碼創建了一個數據框,其中有一列名為. 以及所有由換行符分隔的文本\n 我使用tidyr function separate()將這些數據轉換為列。 為了獲取列名,我使用strsplit() function 將第一行數據分隔為一個字符向量。 (這個 function 生成一個列表,因此[[1]]提取該列表的第一個元素,它是所需的列名向量。)

library(rvest)
library(tidyr)
library(dplyr)

html <- read_html(x = "https://homicides.news.baltimoresun.com/recent/")

data <- html_node(html, ".recentvictims") %>% 
  html_children() %>% 
  head() %>% 
  html_text2() %>% 
  as.data.frame

want <- data %>%
  filter(row_number()>1) %>% # first row has column names
  separate(col='.',sep="\\n",into=strsplit(data[1,1],'\\n')[[1]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM