css - 使用 rvest 抓取网站数据

标签 css r web-scraping rvest

我正在尝试从以下链接中抓取对应于表 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文件。之后你应该查看 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 中下载它会更加困惑。对我来说,这似乎是解决您的问题的最佳方法。

关于css - 使用 rvest 抓取网站数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36124455/

相关文章:

javascript - 如何播放选定的歌曲?

c# - 将 IE10 中的眼睛图标隐藏在 IFrame 中

python - 使用 scrapy 获取 url 列表,然后在这些 url 中抓取内容

html - 在其他元素之上制作一个 div 背景色

r - groupby 数据框列并将行合并到列中

正则表达式匹配单词或点

r - 当特定图中没有带有该标签的数据点时,如何在图中添加图例标签?

javascript - 将 javascript 表导入 Google Docs 电子表格

python - 如何区分两个具有相同类名的元素

html - Bootstrap/CSS 中固定宽度标签中的自动换行