У меня есть список из примерно 13 000 URL-адресов, которые я хочу извлечь из информации, однако, не каждый URL-адрес существует. На самом деле большинство нет. Я только что пробовал передавать все 13 000 URL-адресов через html()
, но это занимает много времени. Я пытаюсь понять, как проверить, действительно ли существуют URL-адреса, прежде чем разбирать их на html()
. Я попытался использовать функции httr
и GET()
, а также функции rcurls
и url.exists()
. По какой-то причине url.exist()
всегда возвращает значения FALSE
, даже если URL-адрес существует, и способ, которым я пользуюсь GET()
, всегда возвращает успех, я думаю, что это происходит потому, что страница перенаправляется.
Следующие URL-адреса представляют тип страниц, которые я обрабатываю, первый не существует
urls <- data.frame('site' = 1:3, 'urls' = c('https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-1&unit=SLE010',
'https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-2&unit=HMM202',
'https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-2&unit=SLE339'))
urls$urls <- as.character(urls$urls)
Для GET()
проблема заключается в том, что второй URL-адрес фактически не существует, но он перенаправляется и, следовательно, возвращает "успех".
urls$urlExists <- sapply(1:length(urls[,1]),
function(x) ifelse(http_status(GET(urls[x, 'urls']))[[1]] == "success", 1, 0))
Для url.exists()
, я получаю три FALSE, даже если первый и третий URL-адреса существуют.
urls$urlExists2 <- sapply(1:length(urls[,1]), function(x) url.exists(urls[x, 'urls']))
Я проверил эти два сообщения 1, 2, но я бы предпочел не использовать useragent просто потому, что я не уверен, как найти мой или он изменится для разных людей, используя этот код на других компьютерах. Поэтому сделать код сложнее подбирать и использовать другим. Ответы обеих должностей предлагают использовать GET()
в httr
. Похоже, что GET()
, вероятно, является предпочтительным методом, но мне нужно будет выяснить, как справиться с проблемой перенаправления.
Может ли кто-нибудь предложить хороший способ в R, чтобы проверить наличие URL-адреса, прежде чем разбирать их до html()
? Я также был бы рад за любую другую предложенную работу по этой проблеме.
UPDATE:
После просмотра возвращаемого значения из GET()
, я выяснил, как работать, см. ответы для деталей.