2015-10-24 3 views
1

Я очищаю данные из Интернета. Я использовал readlines(), но теперь я должен изменить его на getURL() и htmlTreeParse().htmlTreeParse to vector R

a <- getURL(URL) 
    b<-htmlTreeParse(a, encoding = "UTF-8") 

Проблема в том, что b $ children $ html $ body возвращает null для меня. Теперь я застрял в попытке получить каждую строку анализируемого html в вектор.

Буду благодарен за каждую идею.

// редактировать

Я пытаюсь скрести с этого сайта

url<-"http://www.registeruz.sk/cruz-public/domain/accountingentity/show/1545622" 

При печати вар б код сайта выглядит читаемым и все кажется хорошо

// edit2

b$children$html['body']$body 

похоже ближе всего к решению

Чтобы быть более ясным, я хотел бы иметь тот же результат, что и после использования readlines(). Таким образом, каждая строка HTML является компонентом вектора

// окончательное редактирование

b <- htmlTreeParse(url, useInternalNodes=TRUE) 
    html<-b["//body"][[1]] 
    html<-as(html,"character") 
    vectors<-strsplit(html,"\n") 

Это, кажется, создал тот же результат, спасибо всем за помощь

+0

Это действительно не так много. Было бы лучше, если бы вы включили [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Я бы предположил, что ваша HTML-страница имеет другую структуру, чем вы ожидаете, но вы ничего не показали, чтобы подтвердить или опровергнуть это. – MrFlick

+0

Пожалуйста, разместите больше своего кода, включая значение для 'URL', чтобы мы могли даже попытаться его запустить. Или мы догадаемся :) –

+1

Попробуйте 'b $ children $ html [" body "]'. – jlhoward

ответ

1

Любой из них должен работать:

url<-"http://www.registeruz.sk/cruz-public/domain/accountingentity/show/1545622" 

b <- htmlTreeParse(url) 
classs(b) 
# [1] "XMLDocumentContent" 
b$children$html["body"] 

Или:

b <- htmlTreeParse(url, useInternalNodes=TRUE) 
class(b) 
# [1] "HTMLInternalDocument" "HTMLInternalDocument" "XMLInternalDocument" "XMLAbstractDocument" 
b["//body"] 

В последнем примере b является проанализированным XML-документом и поэтому может быть проиндексирован с использованием xPath.

+0

Хорошо, с некоторыми изменениями, похоже, сработает. Я использовал [b "// body"] [[1]], затем сохранил его как символ, а затем разделил на векторы. Спасибо за вашу помощь –