繁体   English   中英

使用R循环浏览csv中的URL列表,打开URL并评估这些站点是否包含特定文本字符串

Use R to loop through list of URLs from csv, open URLs, and assess whether those sites contain a certain text string

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这可能是一个简单的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
2 个回复

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

 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") 

在此处输入图片说明

我们也可以使用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)
1 使用php在文本字符串中创建url

我正在使用PHP在我的网站上创建weblinks。 为什么这样做而不是手动执行 - 因为我正在访问从mysql数据库中提取的链接信息。 查询提取数据很好,我唯一的麻烦是创建一个带链接的文本字符串。 两个变量; $ Loc_Name是我想要显示的文本,$ Loc_Web是URL。 ...

3 从.csv中删除包含特定子字符串的URL字符串

我编写了以下代码,该代码肯定是从列表中删除了一些URL,但是我看到许多URL仍包含我要查找的参数。 我添加了 尝试解决此问题,但仍然无法正常工作。 具有参数的URL如下所示: ?currentPage = 2&Nrpp = 24&No = 24?分页= 1&curren ...

5 如何使用R提取URL中的特定子字符串?

如何修改代码,以便获得“测试图”,而不仅仅是“测试”? 我想捕获以下两个网址的“ https://”和“ .google.com”之间的所有字符; https://test-maps.google.com和https://ulla.google.com 因此,我只想使用同一段代 ...

2018-08-13 10:45:24 4 70   r
6 如何使用正则表达式从R中的文本字符串查找/替换所有URL /链接

我有一个带有n行的文本文件,每行都是一个字符串。 我想将其导入R并使用正则表达式顺序删除所有以http开头(特别是http )的URL。 以下内容在交互式正则表达式检查器(Emacs中的重建器)中起作用,但在R中不起作用。 注意 这个问题和我在下面给出的答案均源于这个有 ...

8 如何识别和处理文本字符串中的所有URL?

我想列举一个文本字符串中的所有URL,例如: 对于找到的每个URL,我想调用一个函数method(...)来转换字符串。 现在我正在使用这样的方法: 这可行,但是对于长字符串来说很慢。 我怎样才能加快速度? ...

9 从文本字符串中删除URL

是否可以从PHP的字符串中搜索并删除URL。 在这里谈论实际文本而不是HTML。 删除示例: 我的问题是用户提交描述字段并使用它来推广自己的URL。 我不确定在不产生太多误报的情况下是否可行。 我考虑过要检测http://或www。 但这并不会阻止像mywebsite.com这 ...

2011-10-14 14:24:02 3 1954   php/ regex
10 如何从文本字符串中获取URL?

我有一个链接URL和其他文本的字符串。 我想把所有的URL都放到$matches数组中。 但是下面的代码不能将所有URL都放到$matches数组中: 以上代码将获得: 。 但错过了以下4个网址: 你能告诉我一个例子,我如何修改上面的代码来获取所有的URL ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM