Показать сообщение отдельно

Читаем Альдебаран с удобством (c) хабрахабр
  #13  
Старый 04.03.2008, 02:20
+toxa+
[Лишённый самовыражени
Регистрация: 16.01.2005
Сообщений: 1,787
С нами: 11217866

Репутация: 3812


По умолчанию Читаем Альдебаран с удобством (c) хабрахабр

Наверняка некоторые хабралюди читают книги на сайте http://lib.aldebaran.ru. Они знают о том, что с некоторых пор текст на сайте "защищён" от копирования. Конечно, большая часть книг осталась доступна для скачивания в удобных для чтения форматах, но многие популярные книги можно только читать он-лайн. Что неудобно.
Следующий несложный скрипт на Питоне скачает книгу целиком, попутно вырезав весь мусор напиханый туда для затруднения копирования.
PHP код:
import urllibresys
p_key 
re.compile('http:\/\/lib\.aldebaran\.ru\/getpage\/1\/.*?"')
p_span re.compile('<span class=h>(.*?)<\/span>')
p_s re.compile('\';s \+= \'')
p_p re.compile('(<p>.*?<\/p>)')
p_url_name re.compile('^(http:\/\/lib.aldebaran.ru\/author\/.*?__)')
def getpage(url):
    try:
        
key =  p_key.findall(urllib.urlopen(url).read())[0][-33:-1]
    
except:
        return 
None
    urllib
.urlopen("http://lib.aldebaran.ru/getpage/1/" key) .read()
    
page =  urllib.urlopen("http://lib.aldebaran.ru/getpage/2/" key) .read()
    
page p_span.sub(''page)
    
page ''.join(p_p.findall(page))
    
page p_s.sub(''page)
    return 
page

url 
sys.argv[1]
url p_url_name.findall(url)[0]
1
while True:
    
page getpage(url str(i) + '.html')
    
+= 1
    
if page != None:
        print 
page
    
else:
        
sys.exit(0
Скрипт принимает параметром командной строки ссылку на любую страницу книги и выводит её текст на стандартный вывод.
Пользоватся им очень просто:
python lit.py http://lib.aldebaran.ru/author/sadov_sergei/sadov_sergei_klinki_u_trona/sadov_sergei_klinki_u_trona__0.html > lit.html

eBookDownloader - целое приложение которое поддерживает библиотеки фикшнбук, альдебара, литпортал (требует .NET)
А так же небольшой плагин для FireFox
ОТСЮДА
__________________
 
Ответить с цитированием