使用Puppeteer操作headless浏览器进行数据爬取时,如果targetPage引入了jQuery,可以直接使用$操作DOM结构,声明一个变量var$=window.$varitems=$('.list-wpa')如果没有介绍,可以自己插入jQuery,方便接下来的DOM操作awaitpage.mainFrame().addScriptTag({url:'https://cdn.bootcss.com/jquery/3.2.0/jquery.min.js'})另外我发现有些网站即使引用了jQuery也无法使用window.$方法获取$,所以最好每次直接在脚本中引入一个jQuery。例子)constpuppeteer=require('puppeteer')void(async()=>{constbrowser=awaitpuppeteer.launch({headless:true})constpage=awaitbrowser.newPage()awaitpage.goto('https://www.zcool.com.cn')等待页面.mainFrame().addScriptTag({url:'https://cdn.bootcss.com/jquery/3.2.0/jquery.min.js'})等待页面.waitFor(2000)constresult=awaitpage.evaluate(()=>{varitems=$('.card-box')varlinks=[]if(items.length>=1){items.each((index,item)=>{letit=$(item)letrate=Number(it.find('.statistics-tuijian').text())lettitle=it.find('.card-infoa').text().replace(/\s+/g,'')letposter=it.find('img').attr('src')links.push({title,rate,poster})})}returnlinks})console.log(result)})()
