Я нахожусь в процессе обучения правильному синтаксическому анализу каналов 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 от этого? Любая помощь приветствуется, спасибо!
Если вы хотите получить хороший HTML-парсер, попробуйте BeautifulSoup.
С ним легко разобраться:
from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(statusupdate['value']) url = soup.find('img').src
Вы также можете попробовать 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'
'http://dustinheroin.chompblog.com/wp-content/uploads/2012/01/20120129-154945.jpg'
Затем вы хотите использовать отдельный анализатор HTML для анализа HTML и получить атрибут img src. Возможно, вы захотите взглянуть на Прекрасный суп .
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.
findall
@ 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