Уведомления

Группа в Telegram: @pythonsu

#1 Март 14, 2015 16:36:36

beginner
Зарегистрирован: 2015-03-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер сайта

Всем привет!

Моя жена администрирует сайт ostanovinasilie.org. И вот, возникла нужда в получении/изъятии всех новостей (порядка 500) в один файл.

Так как я еще совсем “зеленый” по Python'y (я начал с 3-ей ветки) у меня возникли трудности по этой задаче.

Подскажите, пожалуйста, куда двигаться?

Спасибо!

Отредактировано beginner (Март 14, 2015 16:38:41)

Офлайн

#2 Март 14, 2015 20:10:41

alex925
Зарегистрирован: 2015-01-08
Сообщения: 204
Репутация: +  14  -
Профиль   Отправить e-mail  

Парсер сайта

Читай про методы http и как получается информация по этому протоколу, когда изучишь с помощью библиотеки requests потом с легкостью извлечёшь нужную информацию, а разбирать полученные данные будет с помощью lxml.html.

Офлайн

#3 Март 14, 2015 20:16:10

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Парсер сайта

так как сайт “во имя Добра”, решил помочь
если нужно изменить формат записи в файл или сделать чтобы записывало в doc, odt, pdf и т.д. пишите - помогу
lxml

import lxml.html
with open('posts.txt', 'a', encoding='utf-8') as f:
    for p in range(43):
        page = lxml.html.parse(r'http://ostanovinasilie.org/category/news/page/%d/' % p)
        for i in page.xpath('.//div[starts-with(@id, "post")]//a'):
            post = lxml.html.parse(i.attrib['href']).xpath('.//div[starts-with(@id, "post")]')
            f.write(post[0].text_content())



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Март 14, 2015 20:18:40)

Офлайн

#4 Март 15, 2015 20:08:15

beginner
Зарегистрирован: 2015-03-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер сайта

alex925
Спасибо за указанное направление! Буду осваиваться!

Офлайн

#5 Март 15, 2015 20:26:51

beginner
Зарегистрирован: 2015-03-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер сайта

terabayt
Конечно, лучше бы такие сайты вообще не пользовались популярностью, но увы…

По теме: огромное Вам спасибо!
Для сохранения в .doc я просто поменял строку ‘posts.txt’ на ‘posts.doc’?! Все работает.

P.S. Я не “пиявка”, но все-таки спрошу: можете ли Вы модифицировать код, чтобы помимо текста новости, также сохранялись картинки и ссылки из новости?

Офлайн

#6 Март 16, 2015 02:52:01

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Парсер сайта

beginner
модифицировать код, чтобы помимо текста новости, также сохранялись картинки и ссылки из новости?
так как работа с doc для проблематична
import lxml.html
with open('posts.html', 'a', encoding='utf-8') as f:
    for p in range(42, 0, -1):
        page = lxml.html.parse(r'http://ostanovinasilie.org/category/news/page/%d/' % p)
        for i in page.xpath('.//div[starts-with(@id, "post")]//a'):
            post = lxml.html.parse(i.attrib['href']).xpath('.//div[starts-with(@id, "post")]')
            f.write(lxml.html.tostring(post[0], method='html').decode('utf-8'))
этот код сохраняет в html документ с картинками и ссылками
или откройте в ворде этот докмент и сохраните в формате doc, или воспользуйтесь конверторами с html в doc
P.S. если будет что-то нужно помимо этого вопроса, пишите на почту



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Март 16, 2015 02:52:34)

Офлайн

#7 Март 16, 2015 11:26:41

striker88
Зарегистрирован: 2015-03-12
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсер сайта

Регулярные выражения наше всё

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version