2014-09-17 3 views
0

Как извлечь атрибут href из этого кода с помощью XPath?XPath - атрибут extract

<a 
itemprop="url" 
name="1055782959" 
href=“abc123”> 
<span itemprop="name">myName</span> 
</a> 

EDIT: Немного больше информации о том, что я пытаюсь сделать. я на самом деле хочу усиков некоторые данные с веб-сайта с помощью R. Я попытался следующие, но это не работает:

xpathSApply(doc,"a/@href",xmlValue) 

документ страница HTML.

EDIT: код, чтобы получить веб-страницу:

fileUrl <- "http://www.gumtree.com.au/s-cars-vans-utes/toyota/page-1/k0c18320" 
#doc <- htmlTreeParse(fileUrl, useInternal=T) 

getLinks <- function() { 
    links <- character() 
    list(a = function(node, ...) { 
    links <<- c(links, xmlGetAttr(node, "href")) 
    node 
    }, 
    links = function()links) 
} 

h1 <- getLinks 
doc <- htmlTreeParse(fileUrl, useInternal = TRUE, handlers = h1); 
h1$links() 
+0

Использование 'а/@ href' – JLRishe

+1

' xpathSApply (xmlInternalTreeParse (DOC) "// а", xmlGetAttr, "HREF") ' – thelatemail

+0

@thelatemail это одно дает мне сообщение об ошибке: Ошибка в as.vector (x, "character"): не может принуждать тип 'externalptr' к вектору типа 'character'. Но этот код, похоже, немного сработал. Он дает мне все URL-адреса: xpathSApply (doc, "// a", xmlGetAttr, "href"). – user2343837

ответ

2

Мне нравится getLinks для получения href ссылки.

> library(XML) 
> txt <- '<a 
itemprop="url" 
name="1055782959" 
href="abc123"> 
    <span itemprop="name">myName</span> 
    </a>'  
> h1 <- getLinks() 
> htmlParse(txt, asText = TRUE, handlers = h1) 
> h1$links() 
[1] "abc123" 

Если у вас уже есть HTML документ, doc, используйте htmlParse(doc, handlers = h1) вместо htmlParse вызова выше. Функция getLinks находится в примерах ?htmlParse и может быть использована для получения других атрибутов.

getLinks <- function() { 
     links <- character() 
     list(a = function(node, ...) { 
        links <<- c(links, xmlGetAttr(node, "href")) 
        node 
       }, 
      links = function()links) 
} 
+0

Я получаю сообщение об ошибке: Ошибка в обработчиках [w]: объект типа «замыкание» не является подмножеством – user2343837

+0

Возможно, потому что у вас уже есть html-документ. Попробуйте это с помощью 'htmlParse (doc, handlers = h1)' –

+0

. Я получаю еще одну ошибку: Ошибка в as.vector (x, "character"): не может принуждать тип 'externalptr' к вектору типа 'character' – user2343837

Смежные вопросы