воскресенье, 17 июля 2016 г.

Парсинг веба на Emacs Lisp

Наверно достаточно было бы указать этот репо на Гитхабе: zweifisch/enlive - один крутой китаец практически все сделал за остальных. Поэтому приводить какой-то дополнительный быдлокод будет излишне, разве что некоторые заметки по ходу пьесы.

'enlive-text' позволяет получить собственно текст из сырых (raw) результатов, а 'enlive-attr' отдает атрибуты, например нам нужен только "a href" - URL ссылки:
  (enlive-attr (enlive-query el [a])
el - просто некий элемент HTML-документа, в данном случае первая попавшаяся ссылка в блоке.

Сжимать, сжимать, сжимать! В результате парсинга некоторых сайтов на выходе страшная каша с десятками пробелов и табуляций подряд. Требуется что-то такое:
  (replace-regexp "\t" " " nil 1 (point-max))
  (replace-regexp "\s+" " " nil 1 (point-max))
  (replace-regexp "\n\s" "" nil 1 (point-max))

А если что-то обновилось? Вот тут удобно считать хеш от блока - встроенная функция md5.

 Ну а как хранить результаты? Sqlite, или может быть mailbox (MH)? Но победила лень ;) В обычном файле *.org - и это оказалось чертовски удобно (собственно, для того оно и было придумано).

И главный вопрос: а нафига все это надо?? ;)
Ну, тут прямо скажем все просто. Некоторые нехорошие пи@@ы не делают лент RSS на своих сайтах - либо тупо не умеют, либо говноконтент в лентах новостей не протолкнуть. А я часто брезгую туда ходить и бесполезно тратить свое время. Зато у нас есть компьютеры, которые способны обрабатывать по нужным алгоритмам практически любую информацию. Тем более уж текстовую. Тем более какой-то рунет ;)

0 коммент. :

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

Следующее Предыдущее Главная страница

Blogger Template by Blogcrowds