2012-04-11 57 views
2

我解析Feed URL并获取内容。我想知道,如何获取给定feed的favicon并在django模板中呈现。从Feed内容获取图标

我是django和python的新手。我不知道如何做到这一点。

我正在使用feedparser来解析供稿网址。

我正在使用以下代码从文章内容中获取url列表。 NOw,我应该如何获取网站图标,因为在某些内容中的图标呈现为.png格式,并且有几个.png链接。如何区分哪一个是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']) 

回答

1

你应该去的网站的索引页,读取并解析HTML,然后看link标签与"shortcut icon"一个rel。如果没有,请查看服务器上的/favicon.ico

+0

ü可以编辑用U所提出的建议@Ignacio – Anshuma 2012-04-11 06:06:57

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

感谢乌拉圭回合答复解决方案上面的代码。您的代码适用于在www.techcrunch.com等html页面上拥有图标的页面。但对于像popgadget.net这样的网站,它们的网页上没有图标,图标不会被检索到。我遇到了一个获取网站图标的应用程序。 [getfavicon](http://getfavicon.appspot.com/)。即使像popgadget.net这样的网站,它也会返回favicon图片。并且在特殊情况下,返回默认图标。 – Anshuma 2012-04-12 05:04:24

+0

你试过这段代码吗?你是否注意到,如果在HTML中找不到favicon,它有一个回退? – Irfan 2012-04-12 14:05:28