gpt4 book ai didi

Rvest 循环在重定向网站上中断

转载 作者:行者123 更新时间:2023-12-01 23:42:44 27 4
gpt4 key购买 nike

我的情况:我有一个很长(2 万行)的 URL 列表,我需要从中抓取特定数据元素以进行分析。出于本示例的目的,我正在寻找一个名为“sol-num”的特定字段,它是招标编号。使用以下函数,我可以获取 FedBizOpps 上列出的任何采购的招标编号:

require(rvest)
require(magrittr)
fetchSolNum<-function(URL){
URL<-as.character(URL)
solNum<-html(URL)%>%
html_node(".sol-num")%>%
html_text()
}

现在,我有一个包含数千个 URL 的列表,我想提取每个 URL 的请求编号,将其存放到我从中获取 URL 列表的数据框的新列中。为了您自己的测试,这里是 URL 列表中的前十行:

list<-c("https://www.fbo.gov/spg/DISA/D4AD/DITCO/HC1028-12-T-0025/listing.html",
"https://www.fbo.gov/notices/c360b067077aabde331d66e0fe2d1f8f",
"https://www.fbo.gov/notices/f63053a7a6e858a5b7b537a660c473b7",
"https://www.fbo.gov/spg/DLA/J3/DSCP-I/SPM300-12-R-0024/listing.html",
"https://www.fbo.gov/spg/DLA/J3/DAPS/SP7000-11-Q-0047/listing.html",
"https://www.fbo.gov/spg/USAF/AFMC/OCALCCC/F3YCDW1245A001/listing.html",
"https://www.fbo.gov/spg/USAF/AFMC/AFFTC/FA9300-12-R-5001/listing.html",
"https://www.fbo.gov/notices/17ddec6ae37feb69704b1a52e22eeb26",
"https://www.fbo.gov/notices/3b76d40705a23a749aad46df88dcee0c",
"https://www.fbo.gov/notices/91873b727968dc664ada76c48e53e4df")
raw <- data.frame(matrix(unlist(list), nrow=10, byrow=T))

我想将输出存储在名为 raw 的数据框中的变量 solNum 中,所以我现在的功能是使用循环:

raw$solNum<-0

j=1
for (i in list){
raw$solNum[j]<-fetchSolNum(i)
j=j+1
}

当前运行代码会为前五行存入值,然后返回以下错误:

 Error in xml_apply(x, XML::xmlValue, ..., .type = character(1)) : 
Unknown input of class: NULL

经过进一步调查,我发现问题可能在于列表中的这个 URL:https://www.fbo.gov/spg/USAF/AFMC/OCALCCC/F3YCDW1245A001/listing.html转到某种消歧页面,因为有两个采购使用此 URL。

考虑到我的完整列表有 20k 行长,我没有时间仔细检查并清除所有无效 URL 的列表。有没有办法让我当前的函数只为 URL 无效或类似的行插入一个 NA 值?我怎样才能让它不因这个错误而中断?

此外,阅读周围的文章告诉我,将此操作作为矢量化函数而不是循环运行可能会更快、更有效。任何人都可以就我的情况提供任何提示吗?

最佳答案

可能只有 tryCatch() 可以在这里捕获错误并给出 NA。就矢量化而言,我怀疑您是否会看到任何真正的 yield 。阅读一个网站需要一段时间(有时一两秒)。有了 20K,这需要一些时间。一定要查看 Hadley 关于异常和调试的章节,并在您的代码中设置一些检查,这样它就不会在运行 4 小时后崩溃... http://adv-r.had.co.nz/Exceptions-Debugging.html

关于Rvest 循环在重定向网站上中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30579053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com