RSS / Python - парсинг одного изображения URL - PullRequest
1 голос
/ 30 января 2012

Я нахожусь в процессе обучения правильному синтаксическому анализу каналов XML и RSS и столкнулся с небольшой проблемой. Я использую feedbarser в Python для анализа конкретной записи из RSS-канала, но не могу понять, как проанализировать только один img src из раздела содержимого.

Вот что у меня есть.

import dirFeedparser.feedparser as feedparser

feedurl = feedparser.parse('http://dustinheroin.chompblog.com/index.php?cat=22&feed=rss2')
statusupdate = feedurl.entries[0].content

print statusupdate

Теперь, когда я печатаю содержимое, я получаю это:

[{'base': u'http://dustinheroin.chompblog.com/index.php?cat=22&feed=rss2', 'type': u'text/html', 'value': u'<p><a href="http://dustinheroin.chompblog.com/wp-content/uploads/2012/01/20120129-154945.jpg"><img alt="20120129-154945.jpg" class="alignnone size-full" src="http://dustinheroin.chompblog.com/wp-content/uploads/2012/01/20120129-154945.jpg" /></a></p>', 'language': None}]

Каким методом лучше всего получить IMG SRC от этого? Любая помощь приветствуется, спасибо!

Ответы [ 4 ]

3 голосов
/ 30 января 2012

Если вы хотите получить хороший HTML-парсер, попробуйте BeautifulSoup.

С ним легко разобраться:

from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(statusupdate['value'])
url = soup.find('img').src
3 голосов
/ 30 января 2012

Вы также можете попробовать lxml . С lxml вы можете использовать выражения xpath .

Здесь x - ваш статус обновления.

from lxml import etree
st = x[0]["value"]
doc = etree.fromstring(st)
value = doc.xpath("//img/@src") #xpath expr = //img/@src
"".join(value)

Выход = 'http://dustinheroin.chompblog.com/wp-content/uploads/2012/01/20120129-154945.jpg'

3 голосов
/ 30 января 2012

Затем вы хотите использовать отдельный анализатор HTML для анализа HTML и получить атрибут img src. Возможно, вы захотите взглянуть на Прекрасный суп .

например:

from BeautifulSoup import BeautifulSoup
import feedparser

feedurl = feedparser.parse('http://dustinheroin.chompblog.com/index.php?cat=22&feed=rss2')
statusupdate = feedurl.entries[0].content[0]

soup = BeautifulSoup(statusupdate["value"])
print(soup.find("img")["src"])

Обратите внимание, что здесь просто используется первый найденный тег img. Если вам нужно быть более избирательным, посмотрите на findall.

2 голосов
/ 30 января 2012

@ Lattyware, у вас есть проблемы с настройкой мыла.

@ user1130601, вы можете проверить следующий код:

#!/usr/bin/python

from BeautifulSoup import BeautifulSoup
import feedparser

feedurl = feedparser.parse('http://dustinheroin.chompblog.com/index.php?cat=22&feed=rss2')
statusupdate = feedurl.entries[0].content


soup = BeautifulSoup(statusupdate[0]['value'])
print(soup.find("img")["src"])

Вывод:

http://dustinheroin.chompblog.com/wp-content/uploads/2012/01/20120129-171134.jpg
...