Wie Puppeteer / Node-Skript erhalten ein <div> von seiner Klasse zu lesen?

stimmen
0

Gibt es eine Möglichkeit einer Auswahl <div>von seiner Klasse in einem Knoten Puppeteer webscraper?

Es gibt ein divauf der Web - Seite , die wie folgt aussieht:<div class=Body-body-qL80Q>

Ich möchte meinen Schaber den Text von diesem greifen div. Im Moment versuche ich es an die Konsole nur zu schreiben , um zu überprüfen , dass es den richtigen Text ist Grabbing.

Was ist falsch mit meiner querySelector? (Ich hatte vorher das Skript auf die richtige Seite navigieren und einen Screenshot, der es richtig gemacht, damit ich weiß , der Rest es funktioniert.)

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();
})();

Dies ist der Fehler:

(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.
Veröffentlicht am 07/11/2018 um 23:40
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Sie haben vergessen , eine Periode hinzuzufügen , .bevor die Klassenauswahl Body-body-qL80Qin Ihrer document.querySelector()Funktion in page.evaluate():

Außerdem sollten Sie die verwenden textContentEigenschaft anstelle der classNameEigenschaft.

Ihre Konstante textContentsollte auf folgende Weise initialisiert werden:

const textContent = await page.evaluate(() => document.querySelector('.Body-body-qL80Q').textContent);
Beantwortet am 08/11/2018 um 01:17
quelle vom benutzer

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