使用Python lxml.html如何在链接标签中找到图像?

时间:2010-10-31 00:46:57

标签: python html-parsing lxml

我正在使用lxml.html来解析一些hmtl以获取链接,但是当它遇到包含图像的链接时它只返回空白,它真正想要的是能够检测它是否是图像,并且然后尝试返回图像alt文本。

所以它看起来像这样......

from lxml.html import parse, fromstring

doc = fromstring('<a href="Link One">Anchor Link One</a><br /><a href="Link Two"<img src="Image Link Two" alt="Alt Image" /></a><br /><a href="Link Three">Anchor Link Three</a><br />')
for link in doc.cssselect('a'):
    print '%s: %s' % (link.text_content(), link.get('href'))

结果

Anchor Link One: Link One
: Link Two
Anchor Link Three: Link Three

所以我尝试使用.html_content()来尝试获取原始html,然后检查是否是图像。

嗯..如何检测是否包裹在图像中,和/或在那里拉出html ....

2 个答案:

答案 0 :(得分:3)

只需修改你的css选择器:

for img in doc.cssselect('a img'):

您还可以使用XPATH表达式:

for img in doc.xpath('a//img'):

答案 1 :(得分:2)

for link in doc.xpath('a'):
    img = link.find('img')
    if img is not None:
        print '%s: %s' % (img.get('alt'), link.get('href'))
    else:
        print '%s: %s' % (link.text_content(), link.get('href'))