【问题标题】:Is there a way to fetch a div with a name attr?有没有办法获取名称为 attr 的 div?
【发布时间】:2022-01-26 08:18:49
【问题描述】:

我尝试使用 puppeteer 和 console.log 获取一个 div 到我的控制台。问题是我不知道如何获取具有“名称”属性的 div。


module.exports = {
     name: 'market',
     aliases: ['m'],
     args: false,
     description: 'get market info',
     execute(message, args) {
       async function market() {
           try {
               const URL = 'https://www.binance.com/en/trade/REQ_USDT?layout=basic'
               const browser = await puppeteer.launch()
               const page = await browser.newPage()
               const navigationPromise = page.waitForNavigation({waitUntil: "domcontentloaded"});
               await page.goto(URL)
               await navigationPromise;
            
               let data = await page.evaluate(() => {
                   let results = {}
                   let contents = document.querySelectorAll('.css-104s6ge')
                   contents.forEach((optiune) => {
                       results.push({
                           market1: optiune.querySelector('.css-14d05gv').innerText,
                           market2: optiune.querySelector('.css-1pysja1').innerText,
                           market3: optiune.querySelector('.css-m3c6zl').innerText,
                           market4: optiune.querySelector('.css-vjdxdv').innerText,
                       })
                  })
                   return results;
               })
               console.log(data);
               await browser.close()
           } catch (error) {
               console.error(error)
           }
        }
        
        market();
        
     }
 };

我尝试过使用类,但出现此错误: throw new Error('Unexpected extraInfo events for request ' + responseReceived.requestId);

编辑:我通过关闭 puppeteer 版本解决了错误,但现在我得到了一个空白数组。

【问题讨论】:

  • 这能回答你的问题吗? JavaScript get element by name
  • 您不得抓取这些内容:binance.com/en/terms 您不得使用任何深度链接、网络爬虫、机器人、蜘蛛或其他自动设备、程序、脚本、算法或方法,或任何类似或等效的手动过程来访问、获取、复制或监视属性的任何部分...
  • 为 js 尝试 getElementByName 例如:document.getElementsByName("css-104s6ge");

标签: javascript node.js


【解决方案1】:
const elementHandle = await page.$('[name="value"]');

该方法在页面内运行document.querySelector。如果没有元素匹配选择器,则返回值解析为null

Puppeteer Documentation

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多