Skip to content

daevaorn/scraperasaservice.appspot.com

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Idea

  • Сервис который по запросам из вне идет на какие-то сервисы и скрапит их, возвращает контент уже в полу-структурированном виде.
  • Умеет возвращать JSON с элементами
  • принимает задачи как JSON
  • Принимает Xpath на входе
  • Принимает множество урлов
  • Умеет пушить результат клиенту - асинхронный скрапинг
  • Умеет прокидывать и возвращать заголовки
  • Поддерживате кеширование?
  • Поддерживать сценарии - заранее прописанные последовательности фетчинга урлов (например для процедуры логина):
    • мало эффективно -- обычно требуется как-то дополнительная логиа на каждом шаге

Implementation

Formats

Pipelines

  1. загрузка документа (html, xml, json)
  2. парсинг (html5lib, minidom, simplejson -> minidom)
  3. матчинг (xpath)
  4. сериализация дерева (raw, json, xml, yaml?)

Проблемы

  • Как скрапить страницы за логином?
    • Заставлять клиента логиниться по обычной процедуре
    • Прокидывать заголовки и куки
  • Как хендлить куки?

API Reference

Create session

POST /session/

Create session with auto id

Params {application/json}

  • host — target host {string}
  • headers — default headers {hash}
  • cookies — default cookies {hash}

Returns

Status

201 Created

Headers
  • location — session url

PUT /session/[id]

Create session with explicit id

Params {application/json}

  • host — target host {string}
  • headers — default headers {hash}
  • cookies — default cookies {hash}

Returns

Status

200 OK

Delete session

DELETE /session/[id]

Delete existing session

Params

None

Returns

Status

200 OK

Session status

GET /session/[id]

Get session status and statistic

Params

None

Returns

Status

200 OK

Body {application/json}
  • 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}

Performing request (scraping)

POST /session/[id]

Scrape url

Params {application/json}

  • 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}

Returns

Status

200 OK

Body {application/json}
  • 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}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published