Как раз занимаюсь этой проблемой.
Скачать сейчас можно только
https://github.com/victorvsk/apify-core
Но уже есть сервер, клиент (админка), и готовится рецепт ansible/chief/puppet, где, в принципе, нужен будет только vps, и синтаксис типа:
{
"index": {
"url": ["https://github.com/blog"],
"js": false,
"paginate": [
"\\/?+$",
"/?page=<% 1,2,1 %>"
]
},
"posts": {
"from": "select('h2.blog-post-title a') from('index')",
"js": false,
"host": "http://github.com",
"pattern": {
"title": "<% .blog-title %>",
"meta": {
"calendar": "<% .blog-post-meta li:first %>",
"author": "<% .blog-post-meta .vcard %>",
"category": "<% .blog-post-meta li:last %>"
},
"body": "<% .blog-post-body %>"
}
}
}
(Этот "код" скачивает все посты с первых двух страниц гитхаба
https://github.com/blog)
Код на руби, но задумывается как standalone демон, так что можете или поучаствовать или подождать готового решения.
Самая большая сложность, в ближайшее время, наверное, в нормальной документации.
P.S. Смысл вообще в том, есть куча инстансов-парсеров на разных серверах (или на одном, или локально, неважно) и есть админка, где вы создаете сущности (юниты), в которых описываете структуру таким вот псевдо-синтаксисом (что откуда парсить) и в конце-концов указываете url, куда отправить готовый результат
UPDATE: Выложил кривоватый кусок на хероку
Если интересно, можете поэкспериментировать. Конечно, без документации тяжело, но, возможно, что то получится, используя
примеры:
Например, json указанный выше, можно отправить на адрес:
https://agile-river-6704.herokuapp.com/crawler?apify_secret=secret
POST запросом, Content-type: application/json
А для проверки непосредственно синтаксиса, можно передавать не ссылки, а html. Например, вот такой json:
{
"html": "<html><head></head><body><div id='text'>Текст</div></body></html>",
"pattern": { "title": "Значение", "title-2": "Это: <% #text %> <% html |first |html %>", "text-html": "<% #text | first | html %>" }
}
POST запросом на
https://agile-river-6704.herokuapp.com/parser?apif...
Важно указать в адресе ?apify_secret=secret
Это, конечно, совсем черновой вариант, и хероку обрывает запросы более 30 секунд... Но может кто-то заинтересуется.