Как пропустить несуществующие URL при создании списка URL в R - PullRequest
0 голосов
/ 18 марта 2019

Мне нужна помощь в создании списка URL.Я пытаюсь создать список со следующими строками в 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 она работала хорошо, но результатом был список из более чем 3 тысяч URL, большинство из которых отсутствуют.

Я работаю на ПК с Windows, но этот код не генерирует список URL-адресов.Список остается пустым, когда запуск завершен.Я попробовал то же самое в Mac.Это работало таким образом, но выполнение кода не прекращалось.

Я ценю, если кто-нибудь придумает идею!

Спасибо ...

1 Ответ

0 голосов
/ 18 марта 2019

Было бы проще, если бы вы отслеживали статус всех 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-адресах, и ни один из них не существовал, поэтому это может быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...