Стараюсь не забывать про NodeJS, node-webkit... пока времени хватает только на то, чтобы их установить и раз в три месяца пытаться лихорадочно что-то попробовать. Может быть проблема в том, что я не нашел "правильной" книги для того, чтобы быстро освоить азы. Может быть, попробовать освоить не frameworks, а браузер? Но времени все равно нет, потому здесь (пока) только набор ссылок на очень хорошие статьи. CasperJS is a navigation scripting & testing utility for PhantomJS and SlimerJS written in Javascript
В iPython мои (черновики) упражнения с Python, в разделе "Mining" собраны материалы по R, Rapid Miner, Weka, Gate..., в "Projects" фрагменты старых и заготовки для новых исследований... записано для себя, открыто для всех...
вторник, 27 января 2015 г.
Начинаем боевой краулер учебного проекта 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 запросов.
понедельник, 29 декабря 2014 г.
Первый приемлемый вариант работы c jQuery Console+Scratchpad c CSS селекторами вместо XPath
Сначала определились со структурой селекторов html-кода (есть картинка), а потом использовали две строчки кода:
var qq ='*.tile-pin__text';
$(qq).map(function(){return $(this).text(); }).get().join("\n");
У jQuery есть отличный справочник, как и на сайте JavaScript MDN
воскресенье, 28 декабря 2014 г.
Ссылки по теме "XPath MDN Mozilla" и "Introduction to using XPath in JavaScript MDN"
Здесь десяток ссылок от Mozilla Development Network. Эти записи я сделал, когда пытался выбрать инструментарий для парсинга html-страниц. Потом я догадался разделить все мои задачи на две категории. Первая - настройка селекторов для спайдеров (Scrapy). Вторая - ручной (экспрес)парсинг из одной-двух html-страниц, когда надо быстро, а паука писать не хочется. ТОгда можно открыть консоль и по-быстрому вырезать нужные элементы. И все работает, только одна проблема вырисовывается - чтобы вытащить нужные данные из объектов консоли нужны довольно сложнве команды. К таким выводам я пришел после беглого знакомства с мануалами от MDN И Явускрипт победил простой плагин XPath helper.
Короткий пример с работы с jQuery из консоли $x для просмотров запроса Xpath
В плагине FirePath генерируем строку запроса XPath, открываем консоль, а в ней уже выполняем сначала var hr =$x('html/body/div[2]/div/div[2]/div/div/div/div[2]/div/div[1]/div[5]/div[2]/a/@href');, а потом пробуем примерhr[0].nodeValue)map(function(){return $(this).text(); }).get().join("\n")
суббота, 27 декабря 2014 г.
Найден хороший плагин XPath Helper for chrome, но хочется большего
Это предисловие я пишу уже после того, как понял, что мне нужно разделить задачи генерирования Xpath для "боевого" парсера и "экспресс-парсинга" данных с HTML страницы. Здесь же я пытался решить сразу две, окончательное решение для каждой в последующих постах, а здесь пример, пояснения и картинка для XPath Helper for chrome
пятница, 26 декабря 2014 г.
ScrathPad почти идеальный js редактор
Здесь видео и ссылки на документацию. Мне не удалось найти автодополнение и контекстную справку для jQuery. На данный момент для справки jQuery я использую консоль Firebug. Именно Firebug, а не встроенные инструменты 'Web Developer'
вторник, 9 декабря 2014 г.
После обновления Ipython Notebook нужно было править таблицы стилей CSS для экспорта в Blogger
Дело это неблагодарное, но деваться было некуда, HTML шаблон Notebook был изменен так, что все мои "новые" посты выглядели ужасно. После того, как их набралось больше сотни, я понял, что надо совершать подвиг...
Здесь я пытаюсь понять, зачем мне три файла CSS - около 250 строк, которые я выбрал из 2500 строк, генерируемых после импорта nbconvert --to html --template full...
Ну, и конечно, я пытаюсь провести работу над ошибками, почему я угрохал на эту задачку 4 дня...
понедельник, 8 декабря 2014 г.
My old Blogger template for this Notebook in Google Drivenotepad
There are some old lines of css and java scripts here. And nowadays everything is working fine... But time goes by... one day I will have to repair this code... but not today.
Today I prepare this old Blogger Template for new GoogleDrive online Editor. And everyone can look for bugs here right now.
Три файла CSS для Blogger. Я везде "отсек все лишнее", а свои хаки добавил в третий файл
Здесь три файла CSS после моего декабрьского апргрейда. А еще (только для меня) три ссылки на файлы в новом онлайн редакторе css.editey. Все изменения тут же записываются на GoogleDisk. Ну очень удобно. В редакторе есть (!)подсказки (на картинке в желтых треугольниках), с которыми еще надо бы поработать.
вторник, 2 декабря 2014 г.
Зачем нужны Scrapy Feed exports и CsvItemExporter
Первый вариант настройки в документации, второй - super(SlybotCSVItemExporter, self).init(args, *kwargs) - чемпион ГитХаба, для начала я воспроизвел второй вариант от github agrimrules/Python-Web-Crawler но воспроизвел в посте Пробовал "Scrapy feed exporter" ... а до первого варианта здесь так и не дошел... Зато в этом посте около 30 ссылок !