Добрый день.
Легко. Достаточно заменить HTML::TextExtractor на Net::HTTP и выводить не объединенные блоки текста, а просто data.
Код:class Parser { constructor() { this.defaultConf = { version: '0.1.1', results: { flat: [ ['key', 'Keyword'], ['link', 'Link'], ['content', 'Page content'], ] }, results_format: "$key - $link\\n$content\n\\n", search_engine: 'SE::Google', SE_Google_preset: 'default', SE_Yandex_preset: 'default', Net_HTTP_preset: 'default', }; this.editableConf = [ ['SE_Google_preset', ['combobox', 'SE::Google preset']], ['SE_Yandex_preset', ['combobox', 'SE::Yandex preset']], ['Net_HTTP_preset_preset', ['combobox', 'Net::HTTP preset']], ['search_engine', ['combobox', 'Search engine', ['SE::Google', 'Google'], ['SE::Yandex', 'Yandex']]], ]; } *parse(set, results) { return yield* set.lvl == 0 ? this.parseSE(set, results) : this.parseContent(set, results); } *parseSE(set, results) { this.logger.put("Start scraping query: " + set.query); this.logger.put(`Use ${this.conf.search_engine}`); let SEresp = yield this.parser.request( this.conf.search_engine, this.conf[this.conf.search_engine.replace(/::/, '_') + '_preset'], set.query ); if(SEresp.info.success) { let link_count = 0; let step = this.conf.search_engine == 'SE::Google' ? 3 : 5; for (let i = 0; i < SEresp.serp.length; i += step) { const link = SEresp.serp[i]; this.query.add(link); link_count += 1; } this.logger.put("Added " + link_count + " links"); results.success = 1; results.SKIP = 1; return results; } else { this.logger.put(`Error scraping ${this.conf.search_engine}`); results.success = 0; return results; } } *parseContent(set, results) { this.logger.put("Scraping content from " + set.query); let response = yield this.parser.request('Net::HTTP', this.conf.Net_HTTP_preset, set.query); results.key = set.first; results.link = set.query; if(response.info.success) { results.content = response.data; results.success = 1; } else { this.logger.put(set.query + " - error scraping content"); results.success = 0; } return results; } }
Получилось, только в такой конструкции, почему то при настройке Net::HTTP - не использовать прокси, они все таки используются или баг такой или я что то не то настроил. Почему так решил, так как SE парсится IPv6, а после идет парс сайта, и те которые не поддерживают IPv6 - прокси выдает ответ ошибку "502 Bad Gateway". Можно ли для SE использовать прокси, а для Net::HTTP не использовать?