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

Показаны сообщения с ярлыком spider. Показать все сообщения
Показаны сообщения с ярлыком spider. Показать все сообщения

суббота, 21 февраля 2015 г.

Переопределние класса AEBto3tables для таблиц января 2015 и запись результатов

Как и год назад, в Январе таблицы не включают столбцы с предыдущими месяцами. Но, кроме того, в таблицах 2 и 3 убрали столбцы. Так что пришлось выполнить очередную перенастройку.

Переопределние класса AEBto3tables для таблиц января (они отличаются от всех остальных). Потом записываем только три файла в старые папки *aug2.

В Январе таблицы не включают столбцы с предыдущими месяцами. Пробуем просто поменять параметры в настройках метощдов класса

пятница, 20 февраля 2015 г.

Вторая таблица в AEBto3tables для августа с filter(None, line.split(' '))

Используем наше "изобретение" filter(None, line.split(' ')) для того, чтобы парсить таблицы файлов типа "август"

Запускаем из IPyNotebook парсер AEBto3tables, настраиваемся по февральскому файлу и... умнеем

Здесь изобретаем вот такой велосипед filter(None, line.split(' ')), редактируем методы класса, и парсим в новые подпапки (1feb). Новый "ввелосиед" оказался почти идеальным. В конце поста это видно по размерам файлов в папках.

четверг, 19 февраля 2015 г.

Методика перенастройки и отладки pdf парсера AEBto3tables с использован ем IPyNotebook

Формат таблиц в pdf файлах за год несколько раз менялся. После того, как я понял, что надо каждый раз перестраивать парсеры строк, то понял, что даже, если у меня будет десяток разных парсеров для этого сайта, то я определенно в них запутаюсь. Надо записывать все в одном месте - и результаты, и код, и процесс отладки. Здесь я записал процесс перенастройки по файлу августа 2014 и научился наследовать собственный класс.

пятница, 13 февраля 2015 г.

Фрагменты кода для парсере PDF (AEBto3tables)

Здесь я начал раздумывать о том, как сделать парсер pdf и попробовал осмыслить последовательность обработки папки с pdf файлами. Собрал сюда фрагманты работающего кода с os.listdir(path) subprocess.Popen(...) pdftotext , потом фильтры для трех таблиц (код фильтров надо переделать, не учел что в названии может быть несколько слов), потом великие открытия с sys.path.append(...) и прехватом сообщений дебаггера из консоли прямо в notebook...

среда, 11 февраля 2015 г.

Первый рабочий релиз carmailPrice с результатами парсинга

Спайдер выскреб заготовленые страницы в моем ноутбуке и поместил все в таблицу (3727 строки). Кто бы мог подумать, что у нас продавалось такое количество модификаций автомобилей. Здесь плохоочищеный, но работающий код, и ссылки на итоговые таблицы результатов.

вторник, 10 февраля 2015 г.

Слишком "подробно" заданы пути в XPath запросах carmailPrice? Нет! Надо было обработать ошибки

Когда спайдер выдает ошибки при парсинге 2/3 страниц, то начинаются упреки и подозрения. Мне удалось "поймать" паука-халтурщика на странице Daewoo, здесь я сравниваю его поведение на страницах BMW и Daewoo. Трачу на это целый день. Оказалось, что я просто ошибся с "диагнозом". Не на всех страницах модификаций есть ссылки на цены. Спайдер выдавал ошибки, но продолжал работу. Оказалось, что при этом он может пропучкать сразу десятки страниц. Но целый день я искал отличия в коде страниц, здесь фрагменты кода и запросы XPath

пятница, 6 февраля 2015 г.

Как вырезать таблицы из текстового файла, который получился после pdftotext

Открываем текстовый файл и формируем списки (списков) только из отфильтрованных строк (string-methods). Потом эти lists записываем в csv файл. Для записи в файл используем два вложенных цикла по строкам из столбцам... см. In [71] Поскольку эксперименты с примерами из библиотеки csv не удались. Когда буду собирать рабочий код надо не забыть убрать лишние символы (звездочки и скобку) в названиях. В конце тот самый текстовый файл, из которого все напарсено. А перед ним варианты готовых csv файлов.

суббота, 31 января 2015 г.

Особенности краулера carMailPrice Scrapy и все ссылки для написания Спайдера

Код для этого краулера я писал урывками. Надо было понять Rule(LinkExtractor... Потом пришлось делать паузы для срочных заказов... Работа прерывалась и для того, чтобы освоить RE, XPath. В целом я доволен тем, наскоько быстро я разобрался с отладкой спайдера, поскольку пришлось использовать разнообразные и новые для меня навыки. В этом посте код паука и мои заметки по поводу итераций внутри функции parse_item(self, response)

вторник, 27 января 2015 г.

Начинаем боевой краулер учебного проекта carmailPrice с освоения Rules

Здесь черновик кода спайдера с разными (закоментированными) вариантами Rules Linkextractor. Регулярные выражения в правилах и все остальное я далее изменил. Здесь записано, как я "вспоминал" свжеполученные навыки двухнедельной давности:
"Две недели назад я написал краулер-полуфабрикат. Потом неделя ушла на упражнения с XPath и RE, потом неожидано "образовалась" другая срочная работа..."

вторник, 13 января 2015 г.

Делаем Crawler`а из простого (basic) паука carmailPrice Scrapy

Это продолжение поста "Срочно пишем...". Теперь вместо списка спарсенных вручную ссылок настроим краулера при помощи Rule(lLinkExtractor(allow=r'Items/') ... ) и будем следовать по сылкам на странице. Однако, здесь мы вырежем только по три ссылки со страницы. Чтобы вырезать больше надо знать оси XPath. Об этом потом
Нам понадобится знание регулярных выражений. В предыдущем посте краткий справочник по RE.

суббота, 3 января 2015 г.

Срочно пишем простого паука carmailPrice со scrapy genspider для того, чтобы увековечить цены на все автомобили

Здесь я повторяю процессы startproject, genspider, ... потом пишем паука со списком начальных URI, добавляем в него def parse(...) с итератором по ссылкам на html-странице. здесь и список ссылок. Вариант работающий на локальном компьютере, но промежуточный. Понадобится, как учебный пример...

пятница, 2 января 2015 г.

Готовим Xpath Запросы для страницы cars.mail.ru/catalog/bmw/ с помощью Xpath helper chrome

Здесь запросы для трех полей текста ссылок BMW X6 кроссовер (37 значений), значения @href /catalog/bmw/m3/f30/sedan/(37 значений), и поля цены 4121000 (34 значения)... Две красивых картинки и фрагменты кода страницы.
Этот пост использовался для подбора и тестирования XPath запросов.

суббота, 29 ноября 2014 г.

Примеры настройки логирования в Scrapy и картинка "loggers, handlers, filters, and formatters"

"If you’re ready for that, grab some of your favourite beverage and carry on"... Так я начал читать документацию "дебаггинг для продвинутых", поскольку предстоит писать в длиннющие логи... Сначала я нашел на Stackoverflow варианты вывода логов в фва файла, а потом прочитал еще и мануалы Python...

понедельник, 3 ноября 2014 г.

Как я учился, чтобы исправить свои дурацкие ошибки... и совершал новые при отладке в пауке XMLFeed...

В пауке XMLFeed... решил поробовать создать новый столбец из свежеспарсенного словаря списков... Пишем файл pipeline.py в котором фильтруем записи о серверах по времени, типу прокси и стране. Потом записываем результат в виде строк "http://777.77.77.77:8080" в текстовый файл. В процессе работы выскакивают ошибки, я быстро ликивидирую безграмотность перечитывая и конспектируя книгу Лутца. Сроки поджимают, стоит ли продолжать ликбез? Насколько он необходим?

четверг, 16 октября 2014 г.

Первый вариант паука XMLFeedSpider (без pipelines)

Пишу первого паука для парсинга XML фида. Сначала я прочитал документацию и попытался разобраться с основными понятиями. Этот процесс отразился в посте "Читаю документацию XMLFeedSpider", а вот здесь попробовал записать процесс работы над пауком. В итоге работающий полуфабрикат.

воскресенье, 12 октября 2014 г.

Читаю серию из 5-ти статей "five life jackets..." - подробный пример Scrapy

Здесь много полезного. Начиная с пауков, советов типа $x(//div), подробно расписан процесс подключения Postgres... Скачал репозиторий. Посмотрел ссылки из статей, добавил "Scrapy Contracts Evolution"... Здесь только ссылки (штук 20)

пятница, 1 августа 2014 г.

Первый спайдер-сырец с тремя объектами pipeline (работающий четвертьфабрикат)

Снова подправил mail_csv_2_1.py Получил почти окончательный вариант паука, который парсит csv, и добавляет поле rtesponse.url. Потом первый объект pipeline убирает первые две строчки, а второй pipeline из поля URL выбираеит нужные подстроки. Сначала мы записываем все поля в файл, используя опцию (scrapy crawl mail_csv_2_1 -o items_2_2.csv -t csv), а потом дописываем модуль'scrapy_csv_2.pipelines_tofile.CsvWriterPipeline' Этот пост - решение всех задачек, которые возникали в предыдущих постах.

четверг, 22 мая 2014 г.

Продолжаю изучать randomproxy (но решаю, что начинать надо с простых примеров из документации Scrapy)

Попытки выполнить код по частям привели к выводу о том, что сначала надо бы прочитать всю документацию Scrapy. Там много работающих примеров. Я еще плохо знаю Python, поэтому надо разбирать работающий код с хорошей документацией, а не ломать голову над упражнениями неизвестных авторов.