2012-04-11 17 views
2

私はフィードのURLを解析して内容を取得しています。私は知ってほしい、どのように与えられたフィードのfaviconを取得し、djangoテンプレートでレンダリングします。フィードのコンテンツからfaviconを取得

私はdjangoとpythonの初心者です。私はこれをどうやって行うのか分かりません。

私はフィードURLを解析するためにフィードパーサーを使用しています。

次のコードを使用して、記事のコンテンツからURLリストを取得しています。今、faviconの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を解析し、その後"shortcut icon"rellinkタグをご覧ください。それに失敗すると、サーバー上で/favicon.icoを見てください。

+0

あなたは@Ignacio – Anshuma

1

HTMLドキュメントからfaviconを入手するか、サーバー上の/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ページにfaviconを持っているページでうまく動作します。 popgadget.netのようなサイトでは、そのページにfaviconを持っていないので、faviconは取得されません。私はサイトのfaviconを取得するアプリを見つけた。 [getfavicon](http://getfavicon.appspot.com/)。 popgadget.netのようなサイトでも、favicon画像を返します。例外的に、デフォルトのファビコンを返します。 – Anshuma

+0

このコードを試しましたか? faviconがHTMLで見つからない場合は、それが後退していることに気付きましたか? – Irfan

関連する問題