利用空闲时间,学习了puppeteer爬虫,也想爬取网上资源1.一些apipuppeteer.launch(options)参数名称参数类型参数说明ignoreHTTPSErrorsboolean请求过程中是否忽略Https错误信息,默认为falseheadlessboolean是否以“headless”模式运行chrome,即不显示UI。默认为trueexecutablePathstring的可执行文件路径。Puppeteer默认使用自己的chromewebdriver。如果你想指定你自己的webdriver路径,你可以通过这个参数设置slowMonumber来减慢Puppeteer的操作,以毫秒为单位。如果你想看到Puppeteer的整个工作过程,这个参数会非常有用。argsArray(String)传递给chrome实例的其他参数。例如,您可以设置浏览器窗口大小。3000ms,传入0则不限时。dumpioboolean是否将浏览器的stdout和stderr导入到process.stdout和process.stderr中,默认为false{USER}AppDataLocalGoogleChromeUser数据,其中{USER}代表当前登录的用户名envObject指定chromium可见的环境变量,默认为process.envdevtoolsboolean是否为每个tab自动打开DevTools面板,该选项仅在设置headless时为false,有效的浏览器对象api方法名描述browser.close()返回一个promise对象,用于关闭浏览器browser.newPage()返回一个promise对象,创建页面实例页面对象方法名描述页面。goto(url[,options])返回一个promise对象,url为目标链接page.waitForSelector()等待一个selector的元素加载,这个元素可以异步加载page.evaluate(pageFunction[,args])返回一个可序列化的普通对象,pageFunction表示页面要执行的函数,args表示传递给pageFunction的参数2.爬取电影网站constpuppeteer=require('puppeteer');/*爬虫的目标链接地址:豆瓣电影*/consturl=`https://movie.douban.com/tag/#/?sort=R&range=0,10&tags=`;constsleep=time=>newPromise(resolve=>{setTimeout(resolve,time);});(async()=>{console.log('爬虫开始访问目标地址');/*dumpio是否导入浏览器将stdout和stderr处理成process.stdout和process.stderr*/constbrowser=awaitpuppeteer.launch({args:['--no-sandbox'],dumpio:false});constpage=awaitbrowser.newPage();awaitpage.goto(url,{waitUntil:'networkidle2'});awaitsleep(3000);awaitpage.waitForSelector('.more');for(leti=0;i<1;i++){awaitsleep(3000);awaitpage.click('.more');}constresult=awaitpage.evaluate(()=>{let$=window.$;让nodeItems=$('.list-wpa');让链接=[];/*得到对应的元素节点*/if(nodeItems.length>=1){nodeItems.each((index,item)=>{letelem=$(item);letmovieId=elem.find('div').data('id');让title=elem.find('.title').text();让rate=Number(elem.find('.rate').text());让poster=elem.find('img').attr('src').replace('s_ratio_poster','l_ratio_poster');links.push({movieId,title,rate,poster,})})}返回链接;});浏览器.close();控制台.log(结果)})();3。抓取网站内容生成pdf文件launch();constpage=awaitbrowser.newPage();awaitpage.goto(url,{waitUntil:'networkidle0'});/*选择你输出的PDF文件的路径,将抓取到的内容输出为PDF,它必须是已有的PDF,可以是空内容,如果不是空内容PDF,那么内容会被覆盖*/letpdfFilePath='./index.pdf';/*根据你的配置选项,这里我们选择A4纸大小输出PDF方便打印*/awaitpage.pdf({路径:pdfFilePath,格式:'A4',比例:1,printBackground:true,景观:false,displayHeaderFooter:false});browser.close();})()正在努力学习中,如果对学习有帮助,留下你的印记(点赞^_^)往期好文章推荐:使用vue开发移动端管理后台通过省略号节点实现超越本地服务器的单行和多行文本。上传纯css实现瀑布流(多栏和flex布局)
