Добавил(а) AJEV
|
Лень - двигатель прогресса.
Увлекся я как-то книгами одного автора. http://www.rudasov.ru/
Автор довольно часто и интересно отвечает на своем форуме. Читать интересно только его ответы с цитированием вопросов, и прокручивать весь форум лень. Захотелось вынести ответы автора в отдельный текстовый файл, а потом почитать.С возможностью потом скрипт засунуть в планировщик, и высылать новые ответы себе на почту. Здесь опишу только как парсить страничку в виде примера.Сразу предупреждаю, скрипт рабочий (то-есть хотелось прежде всего получить результат с минимальныи затратами времени, поэтому вычиление номера топика и количество страниц в топике ставил ручками).
Итак начнем.
Система: Ubuntu
Интерпретатор: bash
Сайт: http://www.rudasov.ru
Скрипт:
#!/bin/bash echo "">/home/ajev/html/rudazov; i=1;
topik="1782";
until [[ $i -ge "15" ]] do echo $i; url="http://www.rudasov.ru/talk/showthread.php?t=$topik&page=$i"; wget $url -O rud.html&&cat rud.html|iconv -f cp1251 -t utf8>rud.txt&&cat /home/ajev/html/rud.txt|sed -n '/>Автор/p'|sed -e :a -e 's/<[^>]*>//g;/>/home/ajev/html/rudazov let "i=i+1"; done
1.(url="http://www.rudasov.ru/talk/showthread.php?t=$topik&page=$i";) - ну тут все должно быть понятно, урл на нужную тему форума.
2. (wget $url -O rud.html) - выкачиваем страничку и сохраняем. Тут и далее все делается большей частью через текстовые файлы (преднамеренно излишне для отладки) хотя можно все упростить и пользовать только конвееры.
3. (iconv -f cp1251 -t utf8>rud.txt) кодировка для анализа нужна utf8.
4. (sed -n '/>Автор/p') Выбираем кусочки, от слова ">Автор<" --="" message="">".
5. (sed -e :a -e 's/<[^>]*>//g;/ 6. (grep -v "^[[:space:],\t]*$") убираем пустые строки.
7. (/home/ajev/html/rudazov) результирующий файл.
8. (topik="1782";) номер топика.
9. (until [[ $i -ge "15" ]]) 15 - это количество страниц в топике плюс единица. Если страниц 14 ставим 15.
|