Pull to refresh

Comments 11

Надеюсь, это не разработка Алексея Бабушкина?

Пока и из всей статьи, и из поверхностного чтения документации абсолютно непонятно, чем это лучше сотни имеющихся альтернатив. Более-менее понятно, чем хуже: хотя бы необходимостью изучать очередной новый API, механизм описания правил и т.д. Интересно, есть какие-то преимущества и killer features, ради чего нужно бросить Scrapy, Grab, pjscrape, EDF, harvest/jarvest, upton, или даже какую-то когорту более высокоуровневых инструментов, где не надо вручную писать правила?

Исходя из текста статьи, я так понял, что гусями.


Но в данный момент это претензия не к самой библиотеке, а скорее к методу подачи материала в статье. Код ещё не смотрел.

Я чуть-чуть посмотрел, пока чего-то суперинтересного не обнаружил. Масштабирования нет примерно никакого: ни слова о том, чтобы подключать какое-то внешнее хранилище URLов, индексы, очереди и т.д. Выживаемость, перезапускаемость и восстанавливаемость процесса тоже на первый взгляд примерно никакая: даже если очень захотелось и начал парсить пару миллионов страниц на одной машине и оно упало где-то в конце — начинаем все с самого начала. Автоматизации парсинга толком никакой не просматривается: для того, чтобы локализировать нужный кусок текста на странице нужно написать вручную некое декларативное описание координат вытаскиваемого. Никаких инструментов, чтобы генерировать такие штуки хотя бы визуально, тупо ткнув в браузере по элементу, вроде бы нет. Поддержки каких-то продвинутых методов стабилизации скачивания (поддержания собственного списка проксей, абьюзинг TOR ;), или хотя бы зацепления за ту же Crawlera) нет — есть максимум куцая ротация заранее заданного списка проксей.


Вопрос, что же там есть уникального, чего нет нигде, остается.

Планируется цикл статей — этаких how-to в таком же стиле? :)
parser.parse({ actions, rules }).then(console.log);


Вот это разве не бросит исключение? Там вроде надо делать console.log.bind(console).
{
type: 'type', // тип действия — печатать
text: 'гусыня', // Гусь будет искать гусынь, чтоб неплохо потоптаться
scope: '.field[name=search]' // селектор елемента
},
{
type: 'click',
scope: 'button[type=submit]',
waitForPage: true // если знаем что результаты откроются на новой странице
}

const rules = {
scope: '.goose-babe'

зачем изобретать новый язык?
и чем это лучше querySelector?

Это не новый язык, это json, в котором селекторы Sizzle + какие-то действия, которые нужно совершить.

Сама статья любопытна, стиль написания позабавил, спасибо.
Что до личного опыта — из всех инструментов для базового парсинга, которые пробовал, пока больше всего понравился NW.js/Electron. Из коробки можно подключить тот же jQuery(а можно и ванильной js'кой) и строить DOM-дерево со всеми последующими плюшками.
За счет контекста ноды легко контачится с Tor'ом, чуть сложнее — с Fiddler(что позволяет делать волшебные штуки вроде распределения списка прокси по каждому запросу либо изменений ответа сервера), из коробки умеет прокси/подмену заголовков(что тоже иногда весьма полезно) и прочие радости жизни. Отличная поддержка ES6 из коробки, все такое. Ну и визуальное отображение результатов/отладки никто не отменял, конечно же(удобно, когда приходится ковырять пакован обфусцированного js).
Sign up to leave a comment.

Articles