воскресенье, 12 июня 2011 г.

Python. Парсер топиков с Хабра

Всем привет. На днях решил написать небольшой Python скрипт.
Собственно что делает: создает и запускает html страничку с ссылками в виде списка имен топиков.

Код ниже: http://dpaste.com/553390/


#-*- coding: utf-8 -*-
#author: Novikov Denis Yurevich den-vse@yandex.ru dehimer
# это надо будет вам скачать поставить, если не имеется
import lxml.html 
import urllib2

#откуда парсим
page = urllib2.urlopen('http://habrahabr.ru/')
doc = lxml.html.document_fromstring(page.read())

#открываем файл на запись
f = open('HabrNews.html', 'w')

#список новостей (просто строка оформленная в виде списка ссылок)
#заполняется в цикле ниже
news_list=''

#выдираем в цикле все ссылки с классом "topic"
#и добавляем к списку новостей
# (перевод в cp866 для вывода на консоль в винде - хотя это вообще не нужно)
for topic in doc.cssselect('h2.entry-title a.topic'):

    if topic.text:                
        s =  str(topic.text.encode('cp866', 'replace'))
        print s #покажем на консоль
        news_list += '<li><a href="'+topic.attrib['href']+'">'
        news_list += s.decode('cp866').encode('utf-8')+'</a></li>'
        

#тело html в который подставляем получившийся список топиков        
html_code = '''
            <html>
                <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
                </head>
            <body>
            <h2>Новости хабра</h2>
                <ul>%s</ul>
                
            </body>
            </html>
            ''' % news_list

#запишем и закроем (исключения ловить не будем, хотя не помешало бы)
f.write(html_code)        
f.close()

#а это чтобы по окончанию работы автоматически открылся наш html
import os
os.system('HabrNews.html')

пс: версия языка 2.7

Комментариев нет:

Отправить комментарий