在生成网址列表时我需要帮助。我尝试在R Studio中使用以下几行生成列表:
library(RCurl)
links_list = list()
for(j in 10:46) {
for(k in 10:99) {
urls <- c(paste0("https://www.tbmm.gov.tr/tutanaklar/TUTANAK/TBMM/d26/c0", j, "/tbmm260", j, "0", k, ".pdf")) #check 0
if(url.exists(urls) == TRUE)
links_list <- c(links_list, urls)
}
}
我的目标是跳过不存在的网址。在使用if之前,它工作得很好,但是结果列出了超过3k的URL,其中大多数都不存在。
我正在使用Windows的PC上工作,但是此代码不会生成网址列表。运行完成后,该列表将保持空白。我在Mac中尝试过相同的方法。它以某种方式起作用,但是代码的运行并未停止。
如果有人提出一个主意,我将不胜感激!
谢谢...
答案 0 :(得分:0)
如果跟踪所有URL的状态将是最简单的,这样您就可以更好地了解正在发生的情况。试试:
j <- 10:46
k <- 10:99
df <- expand.grid(j=j,k=k)
library(dplyr)
h <- getCurlHandle()
df<-df %>%
mutate(url = paste0("https://www.tbmm.gov.tr/tutanaklar/TUTANAK/TBMM/d26/c0", j, "/tbmm260", j, "0", k, ".pdf"))%>%
mutate(exists=sapply(url,url.exists,curl=h))
在上面的代码中,df
的每一行都有一个URL,并跟踪url.exists()
的返回值。然后,您可以简单地过滤使用
df %>%
filter(exists)%>%
pull(url)
请注意,我在生成的几个URL上进行了尝试,但都不存在,所以可能是问题所在。