Привет, ребята, Я написал какой-то глупый код для обучения, но он не работает ни на одном сайте. вот код:Как получить значки с помощью красивого супа и питона
import urllib2, re
from BeautifulSoup import BeautifulSoup as Soup
class Founder:
def Find_all_links(self, url):
page_source = urllib2.urlopen(url)
a = page_source.read()
soup = Soup(a)
a = soup.findAll(href=re.compile(r'/.a\w+'))
return a
def Find_shortcut_icon (self, url):
a = self.Find_all_links(url)
b = ''
for i in a:
strre=re.compile('shortcut icon', re.IGNORECASE)
m=strre.search(str(i))
if m:
b = i["href"]
return b
def Save_icon(self, url):
url = self.Find_shortcut_icon(url)
print url
host = re.search(r'[0-9a-zA-Z]{1,20}\.[a-zA-Z]{2,4}', url).group()
opener = urllib2.build_opener()
icon = opener.open(url).read()
file = open(host+'.ico', "wb")
file.write(icon)
file.close()
print '%s icon succsefully saved' % host
c = Founder()
print c.Save_icon('http://lala.ru')
Самое странное, что он работает на сайте: http://habrahabr.ru http://5pd.ru
Но не работает для большинства других, которые я проверил , P.S. Я знаю, что код отстой, пожалуйста, дайте мне несколько советов.
Спасибо
Вы можете получить доступ к фавиконки большинства сайтов просто запросив http://example.com/favicon.ico – miku
Thats работы HTML-сайтов, но doens't работа для CMS например wordpress: http://5pd.ru/wp-content/uploads/2010/11/favicon.ico – kurd
Не ругайте с регулярными выражениями. 'soup.find (« link », rel =« ярлык »)' работает (проверено на 5pd.ru). –