- Сервис который по запросам из вне идет на какие-то сервисы и скрапит их, возвращает контент уже в полу-структурированном виде.
- Умеет возвращать JSON с элементами
- принимает задачи как JSON
- Принимает Xpath на входе
- Принимает множество урлов
- Умеет пушить результат клиенту - асинхронный скрапинг
- Умеет прокидывать и возвращать заголовки
- Поддерживате кеширование?
- Поддерживать сценарии - заранее прописанные последовательности фетчинга урлов (например для процедуры логина):
- мало эффективно -- обычно требуется как-то дополнительная логиа на каждом шаге
-
GAE
-
restish
-
раздает API токены для авторизации
- OAuth?
-
py-dom-xpath
-
minidom -> dict
- html -> minidom (через html5lib)
- json -> minidom
- нет реализации - http://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
- неймспейсы
- xml -> minidom
- загрузка документа (html, xml, json)
- парсинг (html5lib, minidom, simplejson -> minidom)
- матчинг (xpath)
- сериализация дерева (raw, json, xml, yaml?)
- Как скрапить страницы за логином?
- Заставлять клиента логиниться по обычной процедуре
- Прокидывать заголовки и куки
- Как хендлить куки?
- http://everydayscripting.blogspot.com/2009/08/google-app-engine-cookie-handling-with.html
- Что делать с неймспейсами при сериализации дерева?
- Для дефолтного убирать префикс
- Для остальных ставить префикс
- Возвращать мапинг префиксов
Create session with auto id
- host — target host {string}
- headers — default headers {hash}
- cookies — default cookies {hash}
201 Created
- location — session url
Create session with explicit id
- host — target host {string}
- headers — default headers {hash}
- cookies — default cookies {hash}
200 OK
Delete existing session
None
200 OK
Get session status and statistic
None
200 OK
- created_at — session creation time {string}
- headers — default request headers {list}
- cookies — default request cookies {hash}
- request_count — count of request with current session {int}
- last_request_at — time when was performed last request with current session {string}
Scrape url
- headers — request headers {list}
- cookies — request cookies {hash}
- urls — requested urls {list of hashes}:
- url — concrete url {string}
- match — XPath expression info {hash}:
- raw — do not convert result to json {boolean}
- pattern — XPath expression to match {string}
- default_namespace — setting default namesapce {string}
- namespaces — namespaces map {hash}:
- key — prefix {string}
- value — namespace {string}
- variables — expression variables {hash}
- return_content — must return whole content {boolean}
- follow_redirects — must handle redirects {boolean}
200 OK
- key — url {string}
- value {hash}:
- status — http status code {int}
- headers — http headers {list}
- cookies — http cookies {hash}
- content — url content {string}
- matched — list of success matched content {hash}:
- key — pattern {string}
- value — content {string or json}