Кукловод не может перейти на веб-страницу, чтобы получить селектор - PullRequest
1 голос
/ 09 мая 2020

Проблема была решена путем добавления cook ie из реального браузера.

Я пытаюсь получить товары за полцены с этого веб-сайта https://shop.coles.com.au/a/richmond-south/specials/search/half-price-specials . Веб-сайт отображается AngularJS, поэтому я пытаюсь использовать кукловод для сбора данных.

const puppeteer = require('puppeteer');
async function getProductNames(){
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();
    await page.setViewport({ width: 1000, height: 926 });
    await page.goto("https://shop.coles.com.au/a/richmond-south/specials/search/half-price-specials");
    await page.waitForSelector('.product-name')

    console.log("Begin to evaluate JS")
    var productNames = await page.evaluate(() => {
      var div = document.querySelectorAll('.product-name');
      console.log(div)
      var productnames = []
      // leave it blank for now
      return productnames
    })

    console.log(productNames)
    browser.close()
}

getProductNames();

P / S: Изучая эту проблему, я выяснил, что веб-страница на самом деле console.log выводит данные каждой страницы, но я не могу отследить запрос. Если вы можете показать мне, как это может быть здорово.

Данные журнала консоли веб-страницы

1 Ответ

0 голосов
/ 10 мая 2020

Попробуйте добавить параметр options в метод page.to ('url' [, options])

page.goto("https://shop.coles.com.au/a/richmond-south/specials/search/half-price-specials", { waitUntil: 'networkidle2' })

Навигация будет считаться завершенной только тогда, когда будет установлено не более 2 сетевых подключений как минимум для 500 мс.

Вы можете обратиться к документации о параметрах объекта опций здесь: Параметр Goto Options

...