Поиск по блогу

среда, 18 ноября 2009 г.

Парсинг findarticles.com - part 1

Итак, в одном из предыдущих постов (в частности, где описывала парсинг ключевиков), я пообещала рассказать о способе дальнейшего употребления данных, которые мы добыли.

Для этих ключевиков, допустим, нам понадобится собрать статьи, им соответствующие (хотя бы отдаленно). Какие-нибудь, без разницы. Я покажу как это сделать, например, с ресурса findarticles.com. Это агрегатор, он сам тянет материал из всевозможных источников, так что от него не убудет :)

Ставим себе задачу.
Имеем: список ключевиков.
Требуется: получить набор текстовых статей. Дополнительное требование: чтобы в каждой статье было не менее определенного числа символов. Это требование возникло из-за того, что на данном агрегаторе много всякого "мусора", могущего состоять из одной строчки, например. А такого добра нам не надо, сразу отсечем этот вариант.

Рассмотрим алгоритм. Можно представить его в двух формах. Первый вариант - это вариант-монолит. То есть в цикле проходим по ключевикам, по каждому ключевику проходим по страницам, попутно на каждой странице собирая статьи. Этот вариант для парсинга большого ресурса не подходит из-за того, что требует стабильности связи на большое время. К тому же потребуется организовать несколько дополнительных настроек, чтобы при повторном запуске скрипт начал парсить не с самого начала, а с того места, на котором остановился.

Второй вариант - это разбить алгоритм на части. Такой прием я уже иллюстрировала на этом блоге в материалах, где описывала опыт парсинга аватаров. То есть берем слово, делаем запрос, собираем ссылки на статьи, выведенные по этому запросу (проходимся по всем страницам или по определенному количеству страниц, заданному в настройках). Собранные ссылки используем для второго этапа: проходим по полученному списку и парсим статьи.

Для парсинга такого большого ресурса, как findarticles, безусловно, лучше выбрать второй алгоритм, что и сделаем.

среда, 14 октября 2009 г.

CURL и реализация POST-запросов

С GET-запросами мы вроде как разобрались. Разобраться с POST-запросами будет ничуть не сложнее. В библиотеке CURL предусмотрены возможности отправления POST-запросов, а так же поддержка работы с сессиями.

Разберем сразу на примере. Так как принципы работы такие же, что и принципы работы с POST-запросами в Delphi (см. статью Пример авторизации на сайте с помощью idHTTP.Post), то и пример возьму тот же, что и в той статье, а именно — авторизация в ЖЖ.

При организации POST-запроса достаточно будет добавить в свойства объекта curl параметр CURLOPT_POST, установленный в 1 (или true) и CURLOPT_POSTFIELDS, значением которого будет строка со значениями переменных в таком виде:

param1=value1&param2=value2&param3=value3&...&paramN=valueN


среда, 30 сентября 2009 г.

Мысли об RSSAdder-е и свободнораспространяемом ПО вообще

В этот крайний день первого месяца осени решила подвести кое-какие итоги относительно RSSAdder-а. Программа выложена на потеху публике уже почти полтора месяца. За это время ее скачали около двухсот человек. Ini-файл (тот, который со списком из 45 агрегаторов вместо изначальных 20) скачали всего 70 раз, почти в 3 раза меньше, чем саму программу. Что, в общем-то, говорит о многом ;D. В частности о том, что большинство людей, скачивая программу, за обновлениями не следят. Чего я добилась? Не знаю, я и не рассчитывала на что-либо, это был своего рода эксперимент: почувствовать себя в роли техподдержки свободнораспространяемого ПО. Спасибо людям, оставляющим свои отзывы о программе. Мне очень приятно знать, что она оказалась полезной еще кому-то кроме меня :)

Хотя вынуждена констатировать факт: надежды на то, что некоторый процент пользователей поддержит мою инициативу и добавит в конфиг новые RSS-агрегаторы самостоятельно, да еще и пришлет эти настройки мне, чтобы я смогла все собрать и выложить в общий доступ, не оправдались. Присылали только списки агрегаторов, добавлять приходилось самой (неудивительно, почему мне все это так быстро надоело, да :)) ) Может, сама виновата, не исключаю (непонятная инструкция? непонятные цели? все непонятное?). Очень подробный отзыв о программе можно прочитать на блоге Профессора. Там тоже отмечается, что не хватает справочной системы. Но не знаю, доберуться ли руки (сейчас я с головой совсем в других делах).

Спасибо автору блога ochonline.ru и "соратнице по IT-цеху" Лорел за информационную поддержку :) Выкладываю свеженький конфиг, список состоит из 51 итема, скачать можно здесь. Добавлены:

46 http://news.nofollow.ru/?page=addrss
47 http://catalog.gpmv.ru/add/1
48 http://www.rss-lenta.ru/rss/add
49 http://rssbiz.ru/add_src/
50 http://rssmonster.ru/index.php?module=rss&action=rss_submit
51 http://ay2.ru/index.php?module=rss&action=rss_submit


Саму программу тоже перезалила, включила в нее сразу конфиг с 51 агрегатором, чтобы не утруждать пользователей скачивать прогу, а потом отдельно конфиг )) Если вы скачали более раннюю версию, то можно обновить только конфиг.

Чтобы быть в курсе обновлений блога, можно подписаться на RSS.