2016-04-19 7 views
1

Я пытаюсь получить данные из веб-сайта и благодаря помощника я мог добраться до следующего сценария:определить правильный селектор CSS в URL-адрес для R сценария

require(httr) 
require(rvest) 
     res <- httr::POST(url = "http://apps.kew.org/wcsp/advsearch.do", 
        body = list(page = "advancedSearch", 
           AttachmentExist = "", 
           family = "", 
           placeOfPub = "", 
           genus =  "Arctodupontia", 
           yearPublished = "", 
           species ="scleroclada", 
           author = "", 
           infraRank = "", 
           infraEpithet = "", 
           selectedLevel = "cont"), 
        encode = "form") 
    pg <- content(res, as="parsed") 
    lnks <- html_attr(html_node(pg,"td"), "href") 

Однако, в некоторых случаях, как и в примере выше, он не получает правильную ссылку, потому что по какой-то причине html_attr не находит URL-адреса («href») в узле, обнаруженном html_node. До сих пор я пробовал использовать другой селектор CSS, например «td», «a.onwardnav» и «.plantname», но ни один из них не генерирует объект, который html_attr может обрабатывать правильно. Подсказка?

ответ

0

Вы действительно близко подошли к ответу, который ожидали. Если вы хотите, чтобы вытащить ссылки от требуемой страницы, то:

lnks <- html_attr(html_nodes(pg,"a"), "href") 

возвращает список всех ссылок на «» метки с атрибутом «HREF». Обратите внимание: команда html_nodes, а не узел. Есть несколько «а» тегов, таким образом, множественное число.
Если вы ищете информацию из таблицы в теле, попробуйте следующее:

html_table(pg, fill=TRUE) 
#or this 
html_nodes(pg,"tr") 

Вторая строка возвращает список из 9 строк из таблицы, которые можно было бы затем разобрать, чтобы получить строку имена («th») и/или строки («td»).
Надеюсь, это поможет.

+0

спасибо! –