2012-04-11 8 views
2

Ich analysiere eine Feed-URL und erhalte den Inhalt. Ich möchte wissen, wie Sie das Favicon für einen bestimmten Feed erhalten und in der Django-Vorlage rendern.Favicon aus einem Feed-Inhalt abrufen

Ich bin ein Neuling für Django und Python. Ich habe keine Ahnung, wie ich das machen soll.

Ich benutze Feedparser zum Parsen Feed-URLs.

Ich verwende folgenden Code, um die URL-Liste von einem Artikel Inhalt zu erhalten. NOW, wie soll ich die Favicon-URL bekommen, weil das Favicon in einigen Inhalten als .png-Format gerendert wird und es einige .png-Links gibt. Wie unterscheidet man, welches ist Favicon?

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

Antwort

1

Sie auf die Indexseite der Website gehen, lesen und die HTML zu analysieren, und dann Blick auf den link-Tag mit einem rel von "shortcut icon". Wenn das nicht funktioniert, sehen Sie sich auf dem Server an.

+0

Can u den obigen Code mit der Lösung bearbeiten u vorschlagen @Ignacio – Anshuma

1

Sie können das Favicon aus einem HTML-Dokument erhalten oder suchen Sie nach /favicon.ico auf dem Server. Hier ist der Code:

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

Vielen Dank für ur Antwort. Ihr Code funktioniert gut für Seiten, die das Favicon auf ihrer HTML-Seite wie www.techcrunch.com haben. aber für Seiten wie popgadget.net, die kein Favicon auf ihrer Seite haben, wird das Favicon nicht abgerufen. Ich bin auf eine App gestoßen, die das Favicon für eine Site bekommt. [getfavicon] (http://getfavicon.appspot.com/). Auch für Websites wie popgadget.net gibt es ein Favicon-Bild zurück. In Ausnahmefällen wird ein Standard-Favicon zurückgegeben. – Anshuma

+0

hast du diesen Code versucht? Haben Sie bemerkt, dass es einen Fallback gibt, wenn Favicon nicht in HTML gefunden wird? – Irfan