Jak se dostat skript Puppeteer / Node číst a <div> dle své třídě?

hlasů
0

Existuje způsob, jak vybrat <div>podle své třídě v Node Loutkář webscraper?

Tam je divna webovou stránku, která vypadá takto:<div class=Body-body-qL80Q>

Chci škrabka chytit text z tohoto div. V současné době, jen se snažím psát do konzole a zkontrolujte, zda je to chytil ten správný text.

Co se děje s mým querySelector? (I v minulosti měl skript přejít na správnou stranu a pořídit snímek, který to udělal správně, takže vím, že to ostatní funguje.)

const puppeteer = require('puppeteer');
const CREDS = require('./creds');

(async () => {
  const browser = await puppeteer.launch({ headless: true });

  const page = await browser.newPage();

  await page.goto('https://www.squarespace.com/login');

  const USERNAME_SELECTOR = '.username.Input-hxTtdt.ipapEE';
  const PASSWORD_SELECTOR = '.password.Input-hxTtdt.ipapEE';
  const BUTTON_SELECTOR = '.Button-kDSBcD.fATVqu';

  await page.click(USERNAME_SELECTOR);
  await page.keyboard.type(CREDS.username);

  await page.click(PASSWORD_SELECTOR);
  await page.keyboard.type(CREDS.password);

  await Promise.all([
    page.waitForNavigation(),
    page.click(BUTTON_SELECTOR),
  ]);

  await page.goto('https://triangle-oarfish-hk88.squarespace.com/config/analytics#activity-log');

  const textContent = await page.evaluate(() => document.querySelector('Body-body-qL80Q').className);

  console.log(textContent);

  await browser.close();
})();

To je chyba:

(node:6116) UnhandledPromiseRejectionWarning: Error: Evaluation failed: TypeError: Cannot read property 'className' of null
(node:6116) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:6116) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Položena 07/11/2018 v 23:40
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Zapomněli jste přidat období .před voliči třída Body-body-qL80Qve své document.querySelector()funkci uvnitř page.evaluate():

Také byste měli být pomocí textContentvlastnost namísto classNamevlastnost.

Vaším stálým textContenttřeba inicializovat následujícím způsobem:

const textContent = await page.evaluate(() => document.querySelector('.Body-body-qL80Q').textContent);
Odpovězeno 08/11/2018 v 01:17
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more