puppeteer

johnsmith

A-Parser Enterprise License
A-Parser Enterprise
имеется такой простенький скрипт, который работает:
Код:
const puppeteer = require('puppeteer');

(async () => {
  try {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://en.wikipedia.org/wiki/Main_Page');
    const title = await page.evaluate(() => {
      const title = document.querySelector('h1');
      return title.innerText.trim();
    });
    await browser.close();
    console.log(title);
  } catch (error) {
    console.log(JSON.stringify(error));
  }
})();

его же аналог на a-parser отказывается работать, вываливается через try/catch, но с пустым объёктом error:
Код:
/* eslint require-yield: 0 */
const puppeteer = require('puppeteer');

class Parser {
  constructor() {
    this.defaultConf = {
      version: '0.1.8',
      results: {
        flat: [['title', 'HTML title']]
      },
      results_format: '$query: $title\\n',
      parsecodes: {
        200: 1
      },
      max_size: 200 * 1024
    };
  }

  async *parse(set, results) {
    try {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
      await page.goto('https://en.wikipedia.org/wiki/Main_Page');
      const title = await page.evaluate(() => {
        const title = document.querySelector('h1');
        return title.innerText.trim();
      });
      await browser.close();
      this.logger.put(title);
    } catch (error) {
      this.logger.put(JSON.stringify(error));
    }
    return results;
  }
}
падает сразу после const browser = await puppeteer.launch();
 
Парсер не поддерживает запуск исполняемых файлов, т.е. метод launch работать не будет.
Нужно вручную запускать браузер.
 
сделал через
Код:
    const browser = await puppeteer.connect({
      browserWSEndpoint:
       'ws://localhost:9222/devtools/browser/xxxx-xxx-xxx-xxxxx',
      ignoreHTTPSErrors: true
    });
все параметры получил, а теперь парсер висит, буду разбираться почему

и я так понимаю что при таком виде запуска мы лишаемся передачи прокси для puppeteer, потому что сейчас у меня сделано так:
Код:
  const browser = await puppet.launch({
    args: [
      "--no-sandbox",
      "--disable-setuid-sandbox",
      `--proxy-server=http://${proxy}`
    ]
    // headless: false
  });
 
Когда будет реализована поддержка прокси для puppeteer?
 
Когда будет реализована поддержка прокси для puppeteer?

если имеется ввиду одиночный прокси, как в примере выше, то прокси можно подставить при запуске Chromium:
Код:
--proxy-server=http://...

работа с множеством прокси в рамках контекста потоков A-Parser'а пока в разработке, т.к. есть сложности, в том числе из за отсутствия поддержки со стороны Chromium
 
Назад
Верх