【问题标题】:DOM Selection with Puppeteer [duplicate]使用 Puppeteer 进行 DOM 选择 [重复]
【发布时间】:2020-03-12 18:14:49
【问题描述】:

我在尝试从 coinfarm.online 抓取某些内容时总是遇到错误。所以我要最后的价格。当我在浏览器中使用控制台尝试它时,它运行良好,但使用此脚本时,我总是收到错误或 null。

const puppeteer = require("puppeteer");

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto("https://coinfarm.online", { waitUntil: "load", timeout: 0 });

  const example = await page.evaluate(
    () => document.querySelector("#xbt_last").innerText
  );

  console.log("Price: " + example);

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

我也用 XPath 尝试过,但也没有用....

【问题讨论】:

  • 也许await page.waitForSelector('#xbt_last') ?

标签: javascript node.js puppeteer


【解决方案1】:

我已经为你做了这个

const puppeteer = require ('puppeteer')
const uaString = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3882.0 Safari/537.36'

;(async () => {
    const browser = await puppeteer.launch ({
        headless : true,
        devtools : false
    })
    const [page] = await browser.pages()

    page.setDefaultNavigationTimeout(0)
    page.setUserAgent(uaString)
    page.setRequestInterception(true)

    page.on('request', async request => {
        if ( request.resourceType() === 'image' || request.resourceType() === 'font' || request.resourceType() === 'media' ) {
            request.abort ()
        } else {
            request.continue ()
        }
    })

    const open = await page.goto ('https://s.tradingview.com/embed-widget/tickers/?locale=en#%7B%22symbols%22%3A%5B%7B%22description%22%3A%22BitMex%20XBT%22%2C%22proName%22%3A%22BITMEX%3AXBTUSD%22%7D%2C%7B%22description%22%3A%22Binance%20USDT%22%2C%22proName%22%3A%22BINANCE%3ABTCUSDT%22%7D%2C%7B%22description%22%3A%22BitFinex%20USDT%22%2C%22proName%22%3A%22BITFINEX%3ABTCUSD%22%7D%2C%7B%22description%22%3A%22BitFlyer%20JPY%22%2C%22proName%22%3A%22BITFLYER%3ABTCJPY%22%7D%5D%2C%22width%22%3A%22100%25%22%2C%22height%22%3A72%2C%22utm_source%22%3A%22coinfarm.online%22%2C%22utm_medium%22%3A%22widget%22%2C%22utm_campaign%22%3A%22tickers%22%7D', {timeout: 0, waitUntil: 'networkidle0'})
    const wait = await page.waitForSelector('.tv-ticker-item-change__last')
    const eVal = await page.evaluate( () => document.querySelectorAll('.tv-ticker-item-change__last')[0].innerText )

    console.log ( parseFloat( eVal ) )

    const exit = await browser.close()
})()

【讨论】:

    猜你喜欢
    • 2018-03-30
    • 1970-01-01
    • 2021-11-06
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2022-01-18
    • 2020-10-07
    相关资源
    最近更新 更多