这可能是一个简单的R问题,但我仍在学习。

我有一长串来自EPA的URL,这些URL包含在CSV中,这些URL链接到特定的排放许可证/设施。 CSV的每一行都包含一个URL。 一些URL转到包含有关可用功能的信息的活动页面,而其他URL(我最终有兴趣识别的URL)转到显示为“找不到NPDES的程序功能-[许可号]”的页面。

我想使用R来浏览此csv URL列表,打开每个URL,并返回有关URL是否良好的TRUE或FALSE值。 “错误” URL基于页面是否返回“找不到程序工具”文本。 理想情况下,可以将TRUE或FALSE值返回值添加到站点URL旁边的列中,这样我就可以轻松地确定哪些是好的链接,哪些不是好链接。

如果您有任何入门建议,我将不胜感激!

我可以使用library(httr)设置一次使用单个链接。

# Bad URL

site1 <- GET("https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=VA0086738&pgm_sys_acrnm_in=NPDES")
contents1 <- content(site1, "text")
any(grepl("No program facility found", contents1))
# [1] TRUE

# Good URL
site2 <- GET("https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=VAG401896&pgm_sys_acrnm_in=NPDES")
contents2 <- content(site2, "text")
any(grepl("No program facility found", contents2))
# [1] FALSE

#1楼 票数:0 已采纳

这是仅包含您提供的两个链接的解决方案:

 library(httr) 

我写了以下几行代码来编写供其他读者使用的数据集(您可以跳过此步骤,并从下一个代码块开始):

#stackoverflow_question_links<- data.frame("Links"=c("https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=VA0086738&pgm_sys_acrnm_in=NPDES","https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=VAG401896&pgm_sys_acrnm_in=NPDES"))
#write.csv(stackoverflow_question_links, "stackoverflow_question_links.csv")

假设您的数据集称为“ stackoverflow_question_links.csv”,我们开始将其读取到R中:

fileName <- "stackoverflow_question_links.csv"
con <- file(fileName,open="r")
lin <-readLines(con)
save<-NULL #initialize save, to save the links with their status (true/false)
for (i in 2:length(lin)){
  site <- GET(lin[i])
  contents <- content(site, "text")
  save<-rbind(save, data.frame("Link" = lin[i],"Status"=any(grepl("No program facility found", contents))))
}
close(conn)
View(save) #or write.csv(save, "links_status.csv") 

在此处输入图片说明

#2楼 票数:0

我们也可以使用rvest来做到这一点。 假设您的数据称为df并且所有链接都在数据的url列中,我们可以在数据text_found创建一个新列( text_found ),以指示是否在该url上'No program facility found'了文本( 'No program facility found' )或不。 因此,如果在URL上找不到该文本,则它是一个很好的URL,反之亦然。

library(rvest)
library(dplyr)

df %>%
    mutate(text_found = purrr::map_lgl(url, ~  .x %>% read_html %>% 
                      html_text() %>%  grepl('No program facility found', .)),
           Good_URL = !text_found)


                                  url       text_found    Good_URL
1 https://iaspub.epa.gov/enviro......             TRUE       FALSE
2 https://iaspub.epa.gov/enviro......            FALSE        TRUE

数据

df <- data.frame(url = c("https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=VA0086738&pgm_sys_acrnm_in=NPDES", 
                         "https://iaspub.epa.gov/enviro/fii_query_dtl.disp_program_facility?pgm_sys_id_in=VAG401896&pgm_sys_acrnm_in=NPDES"), 
                 stringsAsFactors = FALSE)

  ask by happymappy translate from so

未解决问题?本站智能推荐:

1回复

如何获取由几个不同URL组成的字符串列表并将它们转换为R上的可点击链接?

我目前有一个变量,其中包含 1000 多个不同的网站 URL 字符串,但是它们都在字符串中,因此不可点击或任何东西。 是否有一个函数(或一组步骤)可以将所有这些 URL 字符串转换为 R 上实际可点击的 URL。 我的目标是用所有这些制作一个数据框并将其合并到另一个数据框中,但我稍后会担心那部分:)
2回复

从URL列表中随机打开URL的微小URL?

我正在尝试创建一个微小的URL,当单击该URL时,它将重定向到从URL的预定列表中随机选择的URL。 我知道我可以用HTML和Javascript实现此服务器端,但是我希望它仅通过很小的URL即可运行。 基本上是http://www.5050.degstu.com/的操作方式,但没有主机限
1回复

使用R和csv文件在浏览器中打开多个URL

我想使用R,csv文件和使用函数打开4个站点 目前我只能在R中使用变量打开 如果我这样做--- browseURL(a,b)然后显示错误 我想要做的是 - 将所有链接保存在csv列中,在R中读取它并使用For或While函数打开浏览器中的所有链接 或者任何更容易的解 如果脚本
2回复

使用包含个性化列表列的URL在ServiceNow中导出CSV文件

我正在尝试使用 URL 在 ServiceNow 中导出 CSV 文件。 我已经应用了各种过滤器,并对我需要的列表列进行了个性化设置。 问题是,当我使用 URL 获取记录时,我得到了所有列,而不是我的个性化列表列。 谁能告诉我为什么会这样? 我使用的 URL 如下(示例,不是真正的 URL): ht
1回复

如何从列表中的值替换url中的值并使用FOR循环遍历它们

我试图弄清楚如何用列表中的其他交易所替换我代码中字符串中的“BATS”,并循环遍历它们以在一个 python 脚本中获取股票数据,而不是硬编码和创建多个单独的文件。 此外,希望根据正在解析的任何交换,使用相同的逻辑来替换生成的本地 .csv 文件 (BATS_2021-01-19.csv) 的值。
1回复

如何使列表中的项目可单击以在IONIC的浏览器中打开URL

我如何制作离子产品,从而单击列表中的项目将使它在浏览器中打开变量链接? 在下面的示例中,我有这个website_url,无法点击
1回复

如何通过使用列表反复从url更新字符串来使用r下载多个文件

我想从https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_AGO_1_sf.rds下载100多个文件。 网址中唯一更改的字符串是“ AGO”,该字符串将替换为列表中的另一个字符串,例如“ DZA”。 例如, https://biogeo.uc
1回复

根据r中的字符串向量,添加到url中的文本

假设您有一个字符串向量,例如下面的一系列位置... ...此外,您还有一些网址,例如www.fakewebsite.com/search_loc= 。 合适的语法是将“城市”矢量中的每个值粘贴到url的末尾(跟随search_loc= ),以使字符串之间的所有空格都由以下$50分隔,并且每