2015-08-24 2 views
1

Я пытаюсь очистить данные о политическом подтверждении из таблиц википедии (довольно общая задача скремблирования), а регулярный процесс использования на пути css, идентифицированном галочкой селектора, терпит неудачу.rvest + selector gadget return empty list

страница вики here, и путь CSS .jquery-tablesorter:nth-child(11) td кажется, выбрать правую часть страницы right part of wikitable selected

Armed с CSS, я обычно просто использовать rvest для прямого доступа к этим данным, следующим образом:

"https://en.wikipedia.org/wiki/Endorsements_for_the_Republican_Party_presidential_primaries,_2012" %>% 
    html %>% 
    html_nodes(".jquery-tablesorter:nth-child(11) td") 

но это возвращает:

list() 
attr(,"class") 
[1] "XMLNodeSet" 

есть ли у вас какие-нибудь идеи?

+0

Какая часть страницы, которую вы на самом деле пытаетесь пытается получить? – MadScone

+0

Стол, от колонки «Бывший президент» до «Примечания» – tomw

ответ

3

Это может помочь:

library(rvest) 
URL <- "https://en.wikipedia.org/wiki/Endorsements_for_the_Republican_Party_presidential_primaries,_2012" 
tab <- URL %>% read_html %>% 
      html_node("table.wikitable:nth-child(11)") %>% html_table() 

Этот код хранит таблицу, запрошенной в качестве dataframe в переменной tab.

> View(tab) 

enter image description here

+1

Фантастический! Благодаря! Интересно, как вы знаете, чтобы изменить вызов CSS? – tomw

+1

Добро пожаловать. Я рад, что смогу помочь. Я просто изучаю структуру веб-страницы с опцией «инспектор» браузера firefox. Часто это метод проб и ошибок. – RHertel

1

Я считаю, что если я использую XPATH предложение от Chrome работает.

Chrome предполагает XPath из //*[@id="mw-content-text"]/table[4]

то я могу работать следующим образом

library(rvest) 

    URL <-"https://en.wikipedia.org/wiki/Endorsements_for_the_Republican_Party_presidential_primaries,_2012" 
    tab <- URL %>% 
     read_html %>% 
     html_node(xpath='//*[@id="mw-content-text"]/table[4]') %>% 
     html_table()