Спайдер выскреб заготовленые страницы в моем ноутбуке и поместил все в таблицу (3727 строки). Кто бы мог подумать, что у нас продавалось такое количество модификаций автомобилей. Здесь плохоочищеный, но работающий код, и ссылки на итоговые таблицы результатов.
В iPython мои (черновики) упражнения с Python, в разделе "Mining" собраны материалы по R, Rapid Miner, Weka, Gate..., в "Projects" фрагменты старых и заготовки для новых исследований... записано для себя, открыто для всех...
среда, 11 февраля 2015 г.
вторник, 10 февраля 2015 г.
Слишком "подробно" заданы пути в XPath запросах carmailPrice? Нет! Надо было обработать ошибки
Когда спайдер выдает ошибки при парсинге 2/3 страниц, то начинаются упреки и подозрения. Мне удалось "поймать" паука-халтурщика на странице Daewoo, здесь я сравниваю его поведение на страницах BMW и Daewoo. Трачу на это целый день. Оказалось, что я просто ошибся с "диагнозом". Не на всех страницах модификаций есть ссылки на цены. Спайдер выдавал ошибки, но продолжал работу. Оказалось, что при этом он может пропучкать сразу десятки страниц. Но целый день я искал отличия в коде страниц, здесь фрагменты кода и запросы XPath
среда, 21 января 2015 г.
Первый вариант шаблона для подбора и проверки XPath запросов и команды для нормализации строк
На примере carmailPrice. Здесь мы пробуем XPath запросы и тут же чистим полученные списки от лишних проблеов и переносов строк. Возвращаемся к задаче парсинга страницы bmw_mail. Сначала "фотографируем" страницу, потом копипастим сюда фрагмент кода, потом подбираем XPath запросы, потом формируем цепочки для чистки текстовых строк ' '.join(), replace(), split(), strip() эту чистку гордо именуем нормализацией. Работа муторная, но пост наглядный... Потому что с lxml html.fromstring(In[2]) ... а вссылках - примеры кода для "remove ALL whitespace from String"
вторник, 13 января 2015 г.
Делаем Crawler`а из простого (basic) паука carmailPrice Scrapy
Это продолжение поста "Срочно пишем...". Теперь вместо списка спарсенных вручную ссылок настроим краулера при помощи Rule(lLinkExtractor(allow=r'Items/') ... ) и будем следовать по сылкам на странице. Однако, здесь мы вырежем только по три ссылки со страницы. Чтобы вырезать больше надо знать оси XPath. Об этом потом
Нам понадобится знание регулярных выражений. В предыдущем посте краткий справочник по RE.
воскресенье, 11 января 2015 г.
Подборка примеров Scrapy LinkExtractor, Rules для последующих практикумов
Здесь скопированы десятка полтора фрагментов кода с примерами Scrapy LinkExtractor, Rules Больше двух правил в одном примере мне найти не удалось. Однако, надеюсь, что примеры регулярных выражений здесь на все случай паучьей жизни.
суббота, 3 января 2015 г.
Срочно пишем простого паука carmailPrice со scrapy genspider для того, чтобы увековечить цены на все автомобили
Здесь я повторяю процессы startproject, genspider, ... потом пишем паука со списком начальных URI, добавляем в него def parse(...) с итератором по ссылкам на html-странице. здесь и список ссылок. Вариант работающий на локальном компьютере, но промежуточный. Понадобится, как учебный пример...