【问题标题】:Scrape website data using rvest使用 rvest 抓取网站数据
【发布时间】:2016-03-21 06:26:07
【问题描述】:

我正在尝试从以下链接中抓取与表 5 对应的数据:https://www.fbi.gov/about-us/cjis/ucr/crime-in-the-u.s/2013/crime-in-the-u.s.-2013/tables/5tabledatadecpdf/table_5_crime_in_the_united_states_by_state_2013.xls

按照建议,我使用 SelectorGadget 查找相关的 CSS 匹配项,我发现包含所有数据(以及一些无关信息)的匹配项是“#page_content”

我尝试了以下代码,但产生了错误:

fbi <- read_html("https://www.fbi.gov/about-us/cjis/ucr/crime-in-the-u.s/2013/crime-in-the-u.s.-2013/tables/5tabledatadecpdf/table_5_crime_in_the_united_states_by_state_2013.xls")

fbi %>%
html_node("#page_content") %>%
html_table()
Error: html_name(x) == "table" is not TRUE

#Try extracting only the first column:
fbi %>%
html_nodes(".group0") %>%
html_table()
Error: html_name(x) == "table" is not TRUE

#Directly feed fbi into html_table
data = fbi %>% html_table(fill = T)
#This output creates a list of 3 elements, where within list 1 and 3, there are many missing values.

任何帮助将不胜感激!

【问题讨论】:

  • 有个“下载Excel”按钮,比较简单。
  • 否则你可以用fbi %&gt;% read_html() %&gt;% html_node('table.data') %&gt;% html_table(fill = TRUE)或多或少地得到表,但它不是很漂亮。
  • @alistaire 我同意以 excel 格式下载更简单。但是,我希望其他人通过简单地获取我的 .R 文件来快速复制我的工作,而无需下载数据。
  • 所以在指向该文件的链接上调用download.file,然后用xlxsXLConnect 解析它。

标签: css r web-scraping rvest


【解决方案1】:

您可以直接下载excel文件。之后,您应该查看 excel 文件并将所需的数据放入 csv 文件中。之后,您可以处理数据。下面是执行相同操作的代码。

library(rvest)
library(stringr)
page <- read_html("https://www.fbi.gov/about-us/cjis/ucr/crime-in-the-u.s/2013/crime-in-the-u.s.-2013/tables/5tabledatadecpdf/table_5_crime_in_the_united_states_by_state_2013.xls")


pageAdd <- page %>%
  html_nodes("a") %>%       # find all links
  html_attr("href") %>%     # get the url
  str_subset("\\.xls") %>% # find those that end in xls
  .[[1]]     
mydestfile <- "D:/Kumar/table5.xls" # change the path and file name as per your system
download.file(pageAdd, mydestfile, mode="wb")

数据不是非常格式化的方式。因此在 R 中下载它会更加混乱。对我来说,这似乎是解决您的问题的最佳方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2017-03-22
    • 1970-01-01
    • 2020-07-18
    相关资源
    最近更新 更多