C# - работа с прокси и парсер

Александр15 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
24.02.2010

Язык реализации - C#

1. Универсальный класс для использование прокси.

С заданного УРЛа скачивает подготовленный прокси-лист рабочих проксей (ип:порт;тип\r\n)

Обновление листа - каждые *-** минут (обновление происходит при использовании функции класса для запроса какой-либо страницы)

Основная функция класса - Get - обеспечивает загрузку заданной страницы через один из проксей

Прокси имеют свойство дохнуть в любую секунду, а также тоже могут быть забанены, поэтому необходим контроль:

- успешность самого конекта через прокси с заданным таймаутом (таймаут - член класса, задаётся при инициализации)

- успешность получения именно нужной страницы:

-- проверяется заголовок ответа сервера (не 200 - брак)

-- в функцию (опционально) - передаётся либо 1, либо 2 массива: массив строк, которые должны быть найдены на странице в случае корректной загрузки ("

Аргументы - УРЛ, массив строк 1(опционально), массив строк 2(опционально)

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

После * ошибок, прокси идёт в локальный блеклист. Число попыток, количество ошибок и _максимально возможное время, которое прокси может быть в блек-листе_ задаётся при инициализации.

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

2. Парсер архива Лента.ру

Разобрать тут нужно всего пару страниц, так что это просто для элементарного теста многопоточной работы через класс проксей и первого пункта.

Заходим первый день в архиве каждого раздела (http://lenta.ru/sport/2005/02/17/) - парсим список УРЛов на новости в файлик, переходим на следующуюю дату и так для каждого раздела пока не уйдём на страницу "время парсинга - 1день". Информация о текущей дате для парсинга тоже сейвится в файл, дабы можно было продолжать процесс.

Другие потоки смотрят на файл с линками, загребают себе небольшие кучки и отрабатывают (вытаскивается только титл и текст, без "ссылок\сайтов по теме".

Код - вменяемый, откоментированный.

Сроки - минимальные, писать тут особо нечего.

Оплата - по факту или через СБС.

Заявки фрилансеров