library(rvest)
library(tidyverse)
# Start with permit number list
permitlist <- list("DC0000175", "VA0076384", "VA0021318")
# For each permit number, create a URL list that leads to the EPA site associated with that permit
urls <- list()
for(i in 1:length(permitlist)) {
url <- paste0("https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=", permitlist[i], "&pgm_sys_acrnm_in=NPDES")
urls[i] <- url
}
# Open each URL and scrape SIC code data
complete<-data.frame()
tbl <- list()
for (j in seq_along(urls)) {
data <- tbl[[j]] <- urls[[j]] %>%
read_html() %>%
html_nodes("tr") %>%
html_text()
data <- unlist(strsplit(trimws(grep("^NPDES\n", tbl[[j]], value=TRUE)[1]), "\n", perl=TRUE))
complete <-rbind(complete,data, stringsAsFactors = FALSE)
}
1 NPDES 3273 READY-MIXED CONCRETE
2 NPDES 3714 MOTOR VEHICLE PARTS AND ACCESSORIES
3 NPDES 4952 SEWERAGE SYSTEMS
# (Row number, type of permit (all will be NPDES), NPDES SIC code, and description.)
理想情况下,我的最终数据帧将如下所示:
1 NPDES 3273 DC0000175 READY-MIXED CONCRETE
2 NPDES 1611 DC0000175 HIGHWAY AND STREET CONSTRUCTION, EXCEPT ELEVATED HIGHWAYS
3 NPDES 3714 VA0076384 MOTOR VEHICLE PARTS AND ACCESSORIES
4 NPDES 4952 VA0021318 SEWERAGE SYSTEMS
我已经挣扎了一段时间,现在让这个工作,并将感谢任何帮助。
进行两项更改:
c()
将permitlist从列表更改为向量-这也使它运行得更快!数据
df添加新列,并分配相应的许可值library(rvest)
library(tidyverse)
# Start with permit number list
# vector is more efficient and more easily iterable
permitlist <- c("DC0000175", "VA0076384", "VA0021318")
# For each permit number, create a URL list that leads to the EPA site associated with that permit
urls <- list()
for(i in 1:length(permitlist)) {
url <- paste0("https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=", permitlist[i], "&pgm_sys_acrnm_in=NPDES")
urls[i] <- url
}
# Open each URL and scrape SIC code data
complete<-data.frame()
tbl <- list()
for (j in seq_along(urls)) {
tbl[[j]] <- urls[[j]] %>%
read_html() %>%
html_nodes("tr") %>%
html_text()
data <- data.frame(A = NA, B = NA, c = NA, permit = NA)
a <- grep("^NPDES\n", tbl[[j]], value=TRUE)
for(k in seq_along(a)){
dt <- unlist(strsplit(trimws(a[k]), "\n", perl=TRUE))
dt <- c(dt, permitlist[j])
data[k,] <- dt
}
complete <- bind_rows(complete, data)
}
complete
通过在填充表之前指定列名(a,B,C,permit),编辑使输出数据帧更整齐。
我在下面提供了一些示例,但是我需要清除大部分可用的数据元素,所以不是寻找复制和粘贴的代码,而是寻找最好的方法。见下文。 链接:https://boardgamegeek.com/boardgame/63888/innovation 我试图从中提取的HTML示例。Span没有返回html_nodes,所以我无法从那里开始。 我假设这是JSON?有没有一种方法来解析html_text输出,或者另一种方
我正在从一个站点上刮取数据,每个项目都有一个相关的文档URL。我想从那个文件中刮数据,这是可用的HTML格式后点击链接。现在,我一直在使用Google Sheets导入feed来填充基本列。 有没有下一步,我可以做的,进入每个相应的URL并从文档中抓取元素,并用它们填充Google表单?我之所以使用RSS提要(而不是python和BS)是因为它们实际上提供了一个RSS提要。 我找过了,没有找到一个
我正在尝试刮网页,在那里我需要解码整个表到一个数据帧。我正为此使用漂亮的汤。在某些标记中,有一些标记没有任何文本。但这些值会显示在网页上的特定span标记中。 下面的代码对应于该网页, 但是,这个标记中显示的值是。我试着删掉它,但我收到的是空短信。 如何刮这个价值使用美丽的汤。 URL:https://en.tutiempo.net/climate/ws-432950.html 下面给出了我的用于
问题内容: 如何使用XML包抓取html表? 维基百科页面为例。我想在R中阅读它,并获得“巴西与国际足联认可的球队进行的所有比赛的清单”表作为data.frame。我怎样才能做到这一点? 问题答案: …或更短的尝试: 选择的表是页面上最长的表
我试图使用Selenium从代码中获得jpg。我已经设法找到了链接点击获得我的jpg所在的位置。(真倒霉!我刚接触硒)。所有的窗户都随着它的点击而打开。与刮刮乐相比,它真的很慢,所以如果有人能告诉我一个更快的方法,那就太好了。 我试图搜索的网站是www.rosegal.com。我正在刮的类别是大尺寸的背心。这第一页有60个产品在它。如果单击这些产品,它会将您带到一个产品页面,在该页面上您可以选择所