当前位置: 首页 > Web前端 > HTML

大神Node.js爬虫文章15行代码爬取京东淘宝资源【精简版】

时间:2023-04-02 21:54:48 HTML

爬虫只能用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{//该方法内部console.log无效return$('title').text();//返回每个界面的标题文本内容});arr.push(result)//通过循环每次将对应的值添加到数组中}console.log(arr)//可以通过将对应的数据保存到本地Node.js的fs模块awaitbrowser.close()})()有一个天坑page.evaluate函数。内部无法打印console.log,内部无法获取外部变量。只能退货了。使用的选择器必须先到相应的边界我们测试了是否可以在控制台再次选择DOM使用。比如京东不能用querySelector。既然京东的界面使用了jQuery,那么我们就可以使用jQuery。总之,他们开发的选择器我们都可以用,否则没办法。威震天武-神游玄境的资料,在这个时代是非常珍贵的。以上两者可以获得一些指定的特定资源。根据网页的设计逻辑,选择特定href的地址。可以直接先获取对应的资源,也可以再次使用page.goto方法回车,然后调用page.evaluate()进行逻辑处理。这里就不过多介绍了。毕竟Node.js可以上天,说不定以后真的可以无所不能。如此优质短小的教程,请收藏或转发给您的朋友,谢谢。