2012-04-11 2 views
2

Я разобрал URL канала и получаю контент. Я хочу знать, как получить значок для данного фида и сделать в шаблоне django.Получить значок из содержимого фида

Я новичок в django и python. Я не знаю, как это сделать.

Я использую feedparser для синтаксического анализа кормовых URL-адресов.

Я использую следующий код, чтобы получить список URL-адресов из содержимого статьи. NOw, как мне получить URL-адрес favicon, потому что значок в каком-то контенте отображается как .png-формат, и есть пара ссылок .png. как отличить, какой из них является значком?

import feedparser 
import lxml.html as lh 
import urllib2 

#Import Feed for Parsing 
d = feedparser.parse("http://www.popgadget.net/atom.xml") 

# Print feed name 
print d['feed']['title'] 

# Determine number of posts and set range maximum 
posts = len(d['entries']) 

# Collect Post URLs 
for post in d['entries']: 
    link=post['link'] 
    print('Parsing {0}'.format(link)) 
    doc=lh.parse(urllib2.urlopen(link)) 
    imgs=doc.xpath('//img[@class="bpImage"]') 
    for img in imgs: 
     print(img.attrib['src']) 

ответ

1

Вы должны перейти на главную страницу сайта, чтения и разбора HTML, а затем посмотреть на link тег с rel из "shortcut icon". В противном случае посмотрите на сервере /favicon.ico.

+0

Можете ли вы изменить приведенный выше код с помощью решения u, предлагающего @Ignacio – Anshuma

1

Вы можете получить значок из документа HTML или искать /favicon.ico на сервере. Вот код:

import lxml.html as lh 
import urllib2 

link = 'http://www.popgadget.net/' 
doc = lh.parse(urllib2.urlopen(link)) 
favicons = doc.xpath('//link[@rel="shortcut icon"]/@href') 
if len(favicons) > 0: 
    favicon = favicons[0] 
else: 
    favicon = "%sfavicon.ico" % link 
try: 
    urllib2.urlopen(favicon) 
except urllib2.HTTPError: 
    favicon = None 
+0

Спасибо за ответ ур. Ваш код отлично работает для страниц, на которых есть значок на их странице html, например, www.techcrunch.com. но для сайтов, таких как popgadget.net, которые не имеют значков на их странице, значок не извлекается. Я наткнулся на приложение, которое получает значок для сайта. [Getfavicon] (http://getfavicon.appspot.com/). Даже для таких сайтов, как popgadget.net, он возвращает изображение favicon. И в исключительных случаях возвращает значок favicon по умолчанию. – Anshuma

+0

Вы пробовали этот код? вы заметили, что он имеет резервную ошибку, если favicon не найден в HTML? – Irfan