Используя Python lxml.html, как я могу найти изображения в тегах ссылок? - PullRequest
2 голосов
/ 31 октября 2010

Я использую lxml.html для анализа некоторого hmtl для получения ссылок, однако, когда он попадает на ссылку, содержащую изображение, он просто возвращает пустое значение, то, что он действительно хотел бы, - это уметь обнаруживать изображение или затем попытайтесь вернуть изображение и текст.

Так это выглядит так ...

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 ]

3 голосов
/ 31 октября 2010

Просто измените ваш селектор CSS:

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

Вы также можете использовать выражение XPATH:

for img in doc.xpath('a//img'):
2 голосов
/ 31 октября 2010
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'))
...