Получение веб-страниц из переменной

У меня есть data.frame с двумя переменными, одна из которых содержит только URL-адреса. Я хотел бы использовать эти URL-адреса для очистки всех из них и извлечения соответствующей текстовой информации из каждого из них и, тем самым, добавления переменных в фрейм данных, чтобы там был готов текстовый анализ.

FAO_CountryName     FAO_CountryURL
Algeria             https://www.fao.org/giews/countrybrief/country.jsp?code=DZA
Egypt               https://www.fao.org/giews/countrybrief/country.jsp?code=EGY

Другими словами, я хотел бы найти способ рассматривать эти URL-адреса как правильные html-страницы таким образом, чтобы я мог очищать их с помощью команды read_html ().

Идея заключалась бы в том, чтобы в конце процесса было что-то вроде этого:

    FAO_CountryName     FAO_CountryURL                                             FAOText
Algeria             https://www.fao.org/giews/countrybrief/country.jsp?code=DZA     Algeria is an interesting country
Egypt               https://www.fao.org/giews/countrybrief/country.jsp?code=EGY     Egypt is interesting as well but in a different way

См. также:  Веб-парсинг с R - проще, чем Python
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Ileeo

    Сначала мы определяем функцию для сбора нужной информации с определенного URL:

    library(rvest)
    scrapeFAO <- function(x) {
        as.character(x) %>% 
            read_html() %>% 
            html_nodes('.Normal') %>% 
            .[1] %>% 
            html_text()
    }
    
    scrapeFAO("https://www.fao.org/giews/countrybrief/country.jsp?code=DZA")
    # [1] "Reference Date: 24-November-2016"
    

    Это всего лишь пример, мы действительно можем собрать любой элемент, который нам нужен на этой странице. Пожалуйста, прочтите больше о пакете rvest, чтобы расширить возможности здесь.

    Затем мы хотим применить эту функцию к каждой строке и cbind результат к исходному dataframe:

    final <- cbind(mydf, apply(mydf[2],1, scrapeFAO))
    

    Обратите внимание, что, возможно, есть более эффективные способы сделать это.

    Надеюсь это поможет

    Пожалуйста, подумайте о том, чтобы принять и проголосовать за ответ, если вы думаете, что это может помочь другим людям. person Ileeo; 15.02.2017

    Я новичок в стеке, поэтому, по-видимому, у меня еще недостаточно репутации. Я сделаю это, как только ›я получу еще. person Ileeo; 15.02.2017

    Привет, большое спасибо за помощь. Хорошо для сценария, с помощью которого можно рассматривать различные URL-адреса. В любом случае, я не понимаю, как формула должна применяться к каждой строке, и — в любом случае — она ​​не работает с моим фреймом данных FAO_data. Не могли бы вы уточнить? Спасибо еще раз. person Ileeo; 15.02.2017

    Произошла опечатка, извините, попробуйте сейчас. Если вы хотите понять, что происходит, попробуйте запустить только apply(mydf,1, scrapeFAO) и прочтите о семействе функций apply. person Ileeo; 15.02.2017

    Это дает мне ошибку `Errore: ‘Algeria fao.org/giews/ countrybrief / country.jsp? code = DZA ‘не существует в текущем рабочем каталоге (‘ /home/…/ ‘). Вызывается из: check_path (путь) Обзор [1] ›` person Ileeo; 15.02.2017

    извините, моя проблема, что-то пошло не так копипастинг, я отредактировал ответ, теперь должно работать person Ileeo; 15.02.2017

    Все еще не работает. Я получаю следующее сообщение об ошибке: ›scrapeFAO (fao.org/giews /countrybrief/country.jsp?code=DZA) Ошибка в x $ FAO_CountryURL: оператор $ недопустим для атомарных векторов person Ileeo; 15.02.2017

    мои извинения, я последний раз редактировал «вслепую», теперь я могу протестировать его отредактированный. это работает на моей стороне person Ileeo; 15.02.2017

    По-прежнему не работает, извините. Это сообщение, которое я получаю после «последней» части: Ошибка при завершении: ‘Algeria fao.org/giews/countrybrief/country.jsp?code=DZA» не существует в текущем рабочем каталоге (‘/ home / …’). person Ileeo; 15.02.2017

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: