在无头浏览器上以特定网站为源运行 javascript

在无头浏览器上以特定网站为源运行 javascript

我正在使用 ubuntu 服务器(仅终端),并且我有一个必须从特定网站运行的 JavaScript(以避免跨域问题)。

基本上,如果我使用传统浏览器,我会按照以下步骤操作:

  1. 打开浏览器
  2. 打开一个网站
  3. 打开控制台并运行 javascript 代码

那么,我怎样才能在终端中做到这一点呢?

答案1

示例 realCode™,使用新鲜的和维护的通过模块 :

// https://codeburst.io/a-guide-to-automating-scraping-the-web-with-javascript-chrome-puppeteer-node-js-b18efb9e9921

const puppeteer = require('puppeteer');

let scrape = async () => {

    const browser = await puppeteer.launch({headless: true, args: ['--no-sandbox', '--disable-setuid-sandbox']});
    const page = await browser.newPage();

    await page.goto('https://99bitcoins.com/bitcoin-rich-list-top100/#addresses');
    await page.waitFor(3000);

    const result = await page.evaluate(() => {
        var obj = {};
        var data = document.querySelectorAll('table.t99btc-rich-list tr');
        for (var i = 1; i<=100; i++) {
           obj[i] = {
               "hash": data[i].querySelector('td > a').innerText,
               "balance": data[i].querySelector('td:nth-of-type(3)').innerText
           }
        }

        return obj;

    });

    browser.close();
    return result;
};

scrape().then((value) => {
    console.log(JSON.stringify(value, null, 4));
});

用法 :

node top_xbt.js

相关内容