我们可以为需要登录节点js的网站收集数据吗?

时间:2019-02-22 07:39:14

标签: node.js web-scraping

我正在尝试web scraping使用node.js来访问需要密码的网站。有什么方法可以在node.js中执行此操作?

1 个答案:

答案 0 :(得分:1)

您可以尝试puppeteer

'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch({ headless: false });
    const [page] = await browser.pages();

    await page.goto('https://httpbin.org/forms/post');

    await page.type('input[name="custname"]', 'user');
    await page.type('input[name="custemail"]', 'user@example.com');

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

    await page.waitForSelector('pre');

    const data = await page.evaluate(() => {
      return document.querySelector('pre').innerText;
    });

    console.log(JSON.parse(data).form.custemail);

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();

=============================== 对于评论的一面:

'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch({ headless: false });
    const [page] = await browser.pages();
    page.setDefaultTimeout(0);

    await page.goto('https://www.trxade.com/market/login');
    await page.waitForSelector('input[name="deaNumber"]');

    await page.type('input[name="deaNumber"]', '...');
    await page.type('input[name="password"]', '...');

    await Promise.all([
      page.click('input[name="form_login_proceed"]'),
      page.waitForNavigation(),
    ]);

    // await browser.close();
  } catch (err) {
    console.error(err);
  }
})();