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

2 投票
2 回答
6046 浏览
提问于 2025-04-16 06:20

我正在使用lxml.html来解析一些HTML,以获取链接。不过,当遇到包含图片的链接时,它只返回空白。我希望能够检测到这是否是一个图片,然后尝试返回图片的替代文本。

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

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 个回答

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'))
3

只需要修改你的CSS选择器:

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

你也可以使用一个XPATH表达式:

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

撰写回答