[英]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.