Форум сайта python.su
0
Всем привет!
Моя жена администрирует сайт ostanovinasilie.org. И вот, возникла нужда в получении/изъятии всех новостей (порядка 500) в один файл.
Так как я еще совсем “зеленый” по Python'y (я начал с 3-ей ветки) у меня возникли трудности по этой задаче.
Подскажите, пожалуйста, куда двигаться?
Спасибо!
Отредактировано beginner (Март 14, 2015 16:38:41)
Офлайн
14
Читай про методы http и как получается информация по этому протоколу, когда изучишь с помощью библиотеки requests потом с легкостью извлечёшь нужную информацию, а разбирать полученные данные будет с помощью lxml.html.
Офлайн
103
так как сайт “во имя Добра”, решил помочь
если нужно изменить формат записи в файл или сделать чтобы записывало в 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())
Отредактировано terabayt (Март 14, 2015 20:18:40)
Офлайн
0
alex925
Спасибо за указанное направление! Буду осваиваться!
Офлайн
0
terabayt
Конечно, лучше бы такие сайты вообще не пользовались популярностью, но увы…
По теме: огромное Вам спасибо!
Для сохранения в .doc я просто поменял строку ‘posts.txt’ на ‘posts.doc’?! Все работает.
P.S. Я не “пиявка”, но все-таки спрошу: можете ли Вы модифицировать код, чтобы помимо текста новости, также сохранялись картинки и ссылки из новости?
Офлайн
103
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'))
Отредактировано terabayt (Март 16, 2015 02:52:34)
Офлайн
0
Регулярные выражения наше всё
Офлайн