Парсеры сайтов на python (тестирование, сбор информации)
Скачивание страниц
- urllib - основная библиотека в python 3 для загрузки информации
- requests - обертка над urllib, пользоваться гораздо проще и удобнее чем стандартной
- pycurl - альтернативный способ скачивания с помощью библиотеки curl
Разбор данных
- re - стандартная библиотека регулярных выражений, не предназначена для разбора html, но позволяет из найденого участка получить нужную информацию, например часть заголовка, значения из javascript кода на странице
- lxml - основная библиотека для разбора данных, позволяет разбирать xml и html, автоматическая валидация с закрытием тегов, основной язык запросов при работе с html - xpath
- pyquery - получение данных из html используя jQuery подобные запросы. Например p.attr[“id”]
- BeautifulSoup 4 - библиотека для разбора html, собственный синтаксис для разбора. Например soup.find(“ul”, “slides”) найдет ul с классом slides
Браузеры без поддержки js
- mechanize - один из простых и самых старых текстовых браузеров предназначенных в основном для тестирования, но может использоваться и для сбора данных
- zope.testbrowser - изначально предназначен для тестирования фреймворка zope, но может работать самостоятельно. Позволяет получать содержимое станицы, отправлять данные но не поддерживает исполнение javascript.
Браузеры с поддержкой js
- splinter - поддержка в качестве ядра бразеров chrome, firefox, phantomjs, zopetestbrowser, remote webdriver. Достаточно мощная система для парсинга и тестирования с поддержкой iframe и ajax запросов. Не все браузеры могут работать на сервере, некоторым необходимо наличие оконного интерфейса
- ghost.py - обертка над pyside и pyqt4. Поддерживает выполнение js запросов, отправку данных. Но что-то кроме тестирования и заполнения форм на нем сделать не так просто.
- selenium webdriver - основное назначение тестирование, для сбора данных в чистом виде применяется достаточно редко. Использует движки браузеров установленных в системе / удаленной системе.
- phantomjs - через selenium или splinter. Изначально система на js, поддерживает его исполнение, но при этом не требуется поддержка оконного интерфейса.
Пауки
- scrapy - старый, хорошо документированный паук. Основное предназначение сбор данных с сайтов.
- grab - хорошая система, но практически без свежей документации. Приходится разбираться изучая код. В большинстве предствляет обертку над другими библиотеками.
Валидация и очистка верстки
- lxml.html - свой валидатор, закрывает открытые теги, может очистить документ от ненужного.
- pytidylib - автоматически закрывает незакрытые теги при ошибочной верстке, используется библиотека HTML Tidy
Отладка и поиск xpath
1 комплект. На основе браузера Firefox.
firefox + firebug + firepath + firefinder
firepath для выбор элемента и получение его пути по клику мышки через автовыбор. Пути иногда получаются короче, чем когда составляешь вручную. firefinder лучше справляется с отладкой текста запроса. Выбранные элементы подсвечиваются на странице.
2 комплект SketchPath (только для windows)
XMLQuery - новая версия, продолжение развития SketchPath
XPath Editor - старая версия SketchPath
Примеры
Шпаргалка по xpath с часто используемыми примерами получения данных