爬虫只能用python做吗?不,我们天赐的Node.js也能做到!需要准备的最新版本的包。下载最新版本的Node.js。从Node.js官网下载npm包管理器。从官方网站下载最新版本。Node.js会自带npmnpm的第三方包puppeteer。在相应的js文件中运行命令行工具npmi。puppeteer-D表示爬虫在访问一些有保护机制的网页时可能会失败。初入江湖-自由地constpuppeteer=require('puppeteer');//引入依赖(async()=>{//使用async函数实现完美异步constbrowser=awaitpuppeteer.launch();//打开一个新的浏览器constpage=awaitbrowser.newPage();//打开awaitpage.goto('https://www.jd.com/');//转到'url'的网页constresult=awaitpage.evaluate(()=>{//这个结果arraycontainsallimagesrcaddressesletarr=[];//这个箭头函数内部的写处理逻辑constimgs=document.querySelectorAll('img');imgs.forEach(function(item){arr.push(item.src)})returnarr});//'此时的结果是获取的爬虫数据可以通过'fs'模块保存'})()复制过去,使用命令行命令`nodefilename`运行并获取爬虫数据。这个puppeteer包实际上是为我们打开了另一个浏览器,重新打开网页获取他们的数据。进入WTO-逍遥天津篇只爬取了京东首页的图片内容。假设我的需求进一步扩展,我需要爬取京东首页所有标签对应的跳转页面中标题的所有文字内容。最后放入数组中。我们的异步函数分为五步,只有puppeteer.launch(),browser.newPage(),browser.close()是固定的。page.goto指定我们去哪个网页爬取数据,可以更改内部url地址,也可以多次调用该方法。page.evaluate这个函数内部处理了我们要爬取到网页的数据逻辑page.goto和page.evaluate。async内部可以调用多次,也就是说我们可以先进入京东网页,处理逻辑。最后,再次调用page.goto函数。注意上面所有的逻辑都是puppeteer包帮我们在看不见的地方打开另一个浏览器,然后处理逻辑,所以最后调用browser.close()方法关闭那个浏览器。这个时候我们优化上篇文章的代码,爬取对应的资源。constpuppeteer=require('puppeteer');(async()=>{constbrowser=awaitpuppeteer.launch();constpage=awaitbrowser.newPage();awaitpage.goto('https://www.jd.com/');consthrefArr=awaitpage.evaluate(()=>{letarr=[];constaNodes=document.querySelectorAll('.cate_menu_lk');aNodes.forEach(function(item){arr.push(item.href)})returnarr});letarr=[];for(leti=0;i
