当前位置: 首页 > 后端技术 > Node.js

puppeteer爬虫-爬取豆瓣电影

时间:2023-04-03 20:37:54 Node.js

具体使用请参考Puppeteer官网puppeteer爬虫与普通爬虫的区别。爬虫是一种模拟人类请求网站行为的程序。很多爬虫程序都是通过请求http来获取数据的。使用puppeteer作为爬虫就是通过DevTool协议控制Chrome或者Chromium来抓取页面信息。Puppeteer下载两种模式1.Full模式(自动下载最新版本的Chrome)npmipuppeteer...constpuppeteer=require('puppeteer');2.简洁模式(手动指定Chrome路径)npmipuppeteer-core...constpuppeteer=require('puppeteer-core');puppeteer.launch({executablePath:Chrome.exe//指定Chrome或Chromium路径})抓取豆瓣电影直接上传代码constpuppeteer=require('puppeteer-core');constlaunchConfig={headless:false,executablePath:'C:\\ProgramFiles(x86)\\Google\\Chrome\\Application\\chrome.exe',slowMo:1000,defaultViewport:{宽度:1600,高度:900,}}puppeteer.launch(launchConfig).then(asyncbrowser=>{constpage=awaitbrowser.newPage();awaitpage.goto('https://movie.douban.com/cinema/nowplaying/beijing/');constresult=awaitpage.evaluate(()=>{constitems=document.querySelectorAll('#nowplaying>div.mod-bd>ul>li');constlinks=[];if(items.length>;=1){items.forEach((item)=>{constdata=Array.from(item.attributes);constlink={};data.forEach((v)=>{link[v.nodeName]=v.value;});consta=item.querySelector('.poster>a');constimg=a.querySelector('img');link.href=a.getAttribute('href');link.src=img.getAttribute('src');links.push({...link,});});}返回链接;});console.log('result',result)awaitbrowser.close();});关于page.evaluate()API,为什么page.evaluate()函数中可以使用原生DOM操作?Puppeteer是一个Node库,它提供高级API以通过DevTools协议控制Chromium或Chromepage.evaluate()。Evaluate()相当于通过DevTools协议调用浏览器的控制台。在服务器的控制台中,我们可以使用原生操作来控制页面。我们在上面的page.evaluate()中取回调,在控制台执行,得到的数据和上面完全一样