Мне нужна помощь с оператором lxml в python, который извлекает значение метатега - PullRequest
1 голос
/ 20 января 2011

Мне нужна помощь в исправлении этого выражения lxml для извлечения: http://www.etc.. / 1tru.jpg ссылка в разделе заголовка http://www.yfrog.com/9d1truj

#This doesn't work!

# <link rel="image_src" href="http://img337.yfrog.com/img337/5023/1tru.jpg" />
def extract_imageurl(self, doc):
    try:
        self.url, = doc.xpath('//head//link[@rel="image_src"][1]/@href')
    except ValueError:
        self.url = "Error"

спасибо

1 Ответ

1 голос
/ 20 января 2011
In [32]: doc.xpath('//head/link[@rel="image_src"]/@href')[0]
Out[32]: 'http://img337.yfrog.com/img337/5023/1tru.jpg'

Уведомление xpath возвращает список узлов:

In [25]: doc.xpath('//head/link')
Out[25]: [<Element link at 9c94c5c>, <Element link at 9c94b6c>]

Как только вы указали [@rel="image_src"], в списке будет только один узел.Вы можете выбрать узел с помощью [0] после xpath вызова.

In [29]: doc.xpath('//head/link[@rel="image_src"]')[0]
Out[29]: <Element link at 9c94c5c>

import lxml.html as lh
import urllib2

url=r'http://www.yfrog.com/9d1truj'
doc=lh.parse(urllib2.urlopen(url))
link=doc.xpath('//head/link[@rel="image_src"]/@href')[0]
print(link)
# http://img337.yfrog.com/img337/5023/1tru.jpg
...