Код для этого краулера я писал урывками. Надо было понять Rule(LinkExtractor... Потом пришлось делать паузы для срочных заказов... Работа прерывалась и для того, чтобы освоить RE, XPath. В целом я доволен тем, наскоько быстро я разобрался с отладкой спайдера, поскольку пришлось использовать разнообразные и новые для меня навыки. В этом посте код паука и мои заметки по поводу итераций внутри функции parse_item(self, response)
В iPython мои (черновики) упражнения с Python, в разделе "Mining" собраны материалы по R, Rapid Miner, Weka, Gate..., в "Projects" фрагменты старых и заготовки для новых исследований... записано для себя, открыто для всех...
суббота, 31 января 2015 г.
вторник, 27 января 2015 г.
Ссылки для изучения CasperJS, PhantomJS and SlimerJS и статья Screen Scraping with Node.js
Стараюсь не забывать про NodeJS, node-webkit... пока времени хватает только на то, чтобы их установить и раз в три месяца пытаться лихорадочно что-то попробовать. Может быть проблема в том, что я не нашел "правильной" книги для того, чтобы быстро освоить азы. Может быть, попробовать освоить не frameworks, а браузер? Но времени все равно нет, потому здесь (пока) только набор ссылок на очень хорошие статьи. CasperJS is a navigation scripting & testing utility for PhantomJS and SlimerJS written in Javascript
Начинаем боевой краулер учебного проекта carmailPrice с освоения Rules
Здесь черновик кода спайдера с разными (закоментированными) вариантами Rules Linkextractor. Регулярные выражения в правилах и все остальное я далее изменил. Здесь записано, как я "вспоминал" свжеполученные навыки двухнедельной давности:
"Две недели назад я написал краулер-полуфабрикат. Потом неделя ушла на упражнения с XPath и RE, потом неожидано "образовалась" другая срочная работа..."
среда, 21 января 2015 г.
Первый вариант шаблона для подбора и проверки XPath запросов и команды для нормализации строк
На примере carmailPrice. Здесь мы пробуем XPath запросы и тут же чистим полученные списки от лишних проблеов и переносов строк. Возвращаемся к задаче парсинга страницы bmw_mail. Сначала "фотографируем" страницу, потом копипастим сюда фрагмент кода, потом подбираем XPath запросы, потом формируем цепочки для чистки текстовых строк ' '.join(), replace(), split(), strip() эту чистку гордо именуем нормализацией. Работа муторная, но пост наглядный... Потому что с lxml html.fromstring(In[2]) ... а вссылках - примеры кода для "remove ALL whitespace from String"
понедельник, 19 января 2015 г.
Самый краткий справочник по "простейшему" XPath и полсотни примеров
Сделан по двум книгам. "Самоучитель XML" и "XSLT сборник рецептов". Здесь я "адаптировал" почти все примеры для HTML и выполнил их, используя библиотеку lxml. Не хватило терпения на примеры фильтров, я просто скопировал их из книги...
пятница, 16 января 2015 г.
Пробуем сделать html-парсер из из IPyNotebook по рецептам из статьи "HTML Scraping"
Понравилась идея о том, чтобы использовать IPython Notebook для настройки XPath запросов. Это можно делать при помощи объектов lxml, requests. Здесь я успешно опробовал работу связки и распечатал справки по объектам. Нашел ссылки на справочники, после беглого прочтения пришел к выводу, что обе библиотеки не только похожи на объекты Scrapy, но могут быть использованы для экспресс- скрапинга.
четверг, 15 января 2015 г.
Вспоминаем классы из модуля display, HTML, In[], Javascript
Однако нет примеров по Javascript
среда, 14 января 2015 г.
Свалка удачных маленьких экспериментов, результаты которых я собираюсь часто использовать
Здесь я хотел подготовить код для краулера bmw_mail, не удержался и опробовал сразу несколько разных идей: import HTML, import HTML,
''.join(tree.xpath('//span[@class="rank"]/i/text()')), codecs, lxml, requests, .replace('\n','').encode('utf8'), print ''.join(this_link).encode('utf8')
Получилось все, но этот пост не тянет даже на черновик. Здесь просто сумбур из фрагманты кода, но зато я здесь изобрел сразу несколько велосипедов.
вторник, 13 января 2015 г.
Делаем Crawler`а из простого (basic) паука carmailPrice Scrapy
Это продолжение поста "Срочно пишем...". Теперь вместо списка спарсенных вручную ссылок настроим краулера при помощи Rule(lLinkExtractor(allow=r'Items/') ... ) и будем следовать по сылкам на странице. Однако, здесь мы вырежем только по три ссылки со страницы. Чтобы вырезать больше надо знать оси XPath. Об этом потом
Нам понадобится знание регулярных выражений. В предыдущем посте краткий справочник по RE.
Regular Expressions Python ... и мой перечень главных команд
Конспект первой части доументации Python по теме "Регулярные выражения" есть перевод на Хабре. На вторую часть терпения не хватило, но надо помнить, что я прочитал HowTo (а есть еще аполный справочник), и то, что я не включил сюда такие мощные функции, как "Splitting Strings", "Search and Replace"
понедельник, 12 января 2015 г.
Бессонница, Debian Apt-get, dpkg... step by step и стратегия обновлений Linux
Бессоница не способствует сосредоточению. Я включил Kali компьютер в 4 утра... он предложил мне обновить 800mb... и, естественно, произошел сбой... И тут я "вспомнил все"... Если команда apt-get upgrade flashplugin-no не находит пакет flashplugin-no, то она предлагает обновить всё... соглашаться нельзя! Выводы:
1. Обновлять только используемые пакеты поштучно, но каждую неделю!!!
2. Раз в год переустанававливать всю сборку.
3. Все файлы пользователей хранить на отдельном диске\разделе.
4. Посещать askubuntu.com не реже, чем stackoverflow
воскресенье, 11 января 2015 г.
Подборка примеров Scrapy LinkExtractor, Rules для последующих практикумов
Здесь скопированы десятка полтора фрагментов кода с примерами Scrapy LinkExtractor, Rules Больше двух правил в одном примере мне найти не удалось. Однако, надеюсь, что примеры регулярных выражений здесь на все случай паучьей жизни.
суббота, 10 января 2015 г.
Пожарное обновление Scrapy с Conda и PIP
Зубы надо чистить два раза в день, а проверять обновления раз в неделю. К такому выводу я пришел после очередного вынужденного обновления модуля SCrаpy.
Решил записать эти рутинные действия, чтобы научиться выполнять эти операции "на автомате". Пока я еще не понимаю, как лучше организовать процесс "ухода" за "инфраструктурой" (Windows,Linux, Python...
четверг, 8 января 2015 г.
Как подключить системный прокси. In Windows 7 proxycfg.exe has been replaced with the netsh command
Почему "не хочет" работать команда set http_proxy. Именно поэтому. Здесь ссылки, инструкции и примеры для netsh.exe winhttp import proxy source=ie (начинать надо с show proxy). Прокси в Windows можно настроить через WinINET, WinHTTP, использовать WAP - протокол автоматической настройки прокси, или тупо изменить запись в реестре (скриптом).
Здесь ссылки на все случаи проксижизни... и ghbvths команд netsh.
вторник, 6 января 2015 г.
Python webbrowser - можно ли скачивать файлы в дефолтный браузер, а потом сохранять?
Это паллиативный вариант? Пока не освоен jsnode? Надо ли ожидать, что появится новая библиотека с браузером Python+Javascript.Поэтому здесь есть еще ссылка на CEF Python. А начинается все с примера кода для открытия браузера и распечатки документации dir(),help()
Первое впечатление разочаровывающее..., но оно же и поверхностное
понедельник, 5 января 2015 г.
Пример использования Python subprocess для выполнения команд консоли Windows
Набрел на этот модуль когда задался вопросом: "Хорошо бы перехватывать значения констант из пространтства имен экземпляра консоли"... На эту библиотеку надо обратить внимание, потому что:
This module allows you to spawn processes, connect to their input/output/error pipes, and obtain their return codes. This module
intends to replace several other, older modules and functions, like: os.system os.spawn os.popen popen2. commands.
Фрагменты документации из OS (Python)
Здесь можно посмотреть распечатки dir() help() модуля os, os.sys, os.system, os.path ... Библиотека разветвленная, а времени на нее никогда не хватает. Так что просматривать этот пост надо бы при каждом удобном сучае.
воскресенье, 4 января 2015 г.
Работна над ошибкой http_proxy="http://127.0.0.1:8118" довела до реестра Windows Registry
Глупости мы делаем, когда спешим или думаем о другом. Когда неопытный кодер обнаруживает в "продакшене" ошибку, то надо сначала хладнокровно следовать правилу: НЕ ДУМАЙ, а тупо проверь, подключено ли питание к твоему компьютеру.
Копипаст примеров и фрагментов из документации urllib Python
Снова читаю urllib, снова не хватает времени, потому делаю заготовки для последующего воспроизведения примеров из документации. Здесь же и ссылки на каждый раздел и пример из документации
суббота, 3 января 2015 г.
Cтроковыe и встроенные функций Python. Ссылки и примеры для чистки спарсенных фрагментов. Регулярные выражения - ссылки на хороший мануал
После парсинга html-страниц появляется и мусор. Например, как убрать ненужные переносы строк, объединить текстовые фрагменты списков..., сначала надо пробовать "простейших" (быстрые встроенные функции и ...типы...) join(),map(), replace(),str.rstrip()... а уж потом пускаться во все тяжкие с regexp. Поэтому здесь примеры с простейшими и только ссылки для изучения regexp.
Две части пособия с Хабра, два онлайн сервиса отладки, Справочник Python, ходовые примеры от Гугла
Some people, when confronted with a problem, think «I know, I'll use regular expressions.» Now they have two problems.
Срочно пишем простого паука 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 запросов.