介绍
这篇文章主要介绍了nodejs的爬虫框架搞有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
<强>前言强>
早就听过爬虫,这几天开始学习nodejs,写了个爬虫https://github.com/leichangchun/node-
使用到这几个点:
1,节点的核心模块,文件系统
2,用于http请求的第三方模块,搞
3,用于解析DOM的第三方模块,恭喜恭喜
几个模块详细的讲解及API请到各个链接查阅,演示中只有简单的用法。
<强>准备工作强>
使用npm管理依赖,依赖信息会存放在包中。json中
//安装用到的第三方模块 cnpm install ,,节省superagent 恭喜恭喜
引入所需要用到的功能模块
//引入第三方模块,搞用http请于求,加油用于解析DOM const request =,要求(& # 39;搞# 39;); const cheerio =,要求(& # 39;加油# 39;); const fs =,要求(& # 39;fs # 39;);
<强>请求+解析页面强>
想要爬到博客园首页的内容,首先要请求首页地址,拿到返回的html,这里使用搞进行http请求,基本的使用方法如下:
request.get (url) ,,,,,指标(错误,res){最终 ,,,,,//do something ,,,, }
向指定的网址发起得到请求,请求错误时,会有误差返回(没有错误时,误差为零或未定义),res为返回的数据。
拿到html内容后,要拿到我们想要的数据,这个时候就需要用好呀解析DOM了,加油要先加载目标html,然后再进行解析,API和jquery的API非常类似,熟悉jquery上手非常快。直接看代码实例
//目标链接,博客园首页 let targetUrl =, & # 39; https://www.cnblogs.com/& # 39;;//用来暂时保存解析到的内容和图片地址数据 let content =, & # 39; & # 39;; let imgs =, [];//发起请求 request.get (targetUrl) ,,,指标(最终,(错误,res)=祝辞,{ ,,,,,如果(错误){,//请求出错,打印错误,返回 ,,,,,,,console.log(错误) ,,,,,,,返回; ,,,,,} ,,,,,//,加油需要先load html ,,,,,let 美元,=,cheerio.load (res.text); ,,,,,//抓取需要的数据,每个为加油提供的方法用来遍历 ,,,,,美元(& # 39;# post_list .post_item& # 39;) . each(,(指数(元素)=祝辞,{ ,,,,,,,//分析所需要的数据的DOM结构 ,,,,,,,//通过选择器定位到目标元素,再获取到数据 ,,,,,,,let temp =, { ,,,,,,,,,& # 39;标题& # 39;,:,美元(元素);(& # 39;h4 一个# 39;)。text (), ,,,,,,,,,& # 39;作者& # 39;,:,美元(元素);(& # 39;.post_item_foot 祝辞,一个# 39;)。text (), ,,,,,,,,,& # 39;阅读数& # 39;,,,+ $(元素);(& # 39;.article_view 一个# 39;)。text () .slice (3, 2), ,,,,,,,,,& # 39;推荐数& # 39;,:,+ $(元素);(& # 39;.diggnum& # 39;)。text () ,,,,,,,} ,,,,,,,//拼接数据 ,,,,,,,content +=, JSON.stringify(临时),+,& # 39;\ n # 39;; ,,,,,,,//同样的方式获取图片地址 ,,,,,,,如果(美元(元素);(& # 39;img.pfs& # 39;) .length 祝辞,0){ ,,,,,,,,,imgs.push($(元素);(& # 39;img.pfs& # 39;) .attr (& # 39; src # 39;)); ,,,,,,,} ,,,,,}); ,,,,,//存放数据 ,,,,,mkdir(& # 39;。/内容# 39;,saveContent); ,,,,,mkdir(& # 39;。/一个# 39;,downloadImg); ,,,})
<强>存储数据强>
上面解析DOM之后,已经拼接了所需要的信息内容,也拿到了图片的URL,现在就进行存储,把内容存放到指定目录的txt文件中,而且下载图片到指定目录
先创建目录,使用nodejs核心的文件系统
//创建目录 function mkdir (_path,回调){ 如果才能(fs.existsSync (_path)) { ,,,console.log (“$ {_path}目录已存在的) }{其他才能 ,,,fs.mkdir (_path(错误)=祝辞,{ ,,,,,如果(错误){ ,,,,,,,return console.log(“创建$ {_path}目录失败”); ,,,,,} ,,,,,console.log(“创建$ {_path}目录成功”) ,,,}) ,,} ,,回调();//没有生成指定目录不会执行 }
有了指定目录之后,可以写入数据了,txt文件的内容已经有了,直接写入就可以了使用writeFile ()
//将文字内容存入txt文件中 function saveContent (), { fs.writeFile才能(& # 39;。/内容/content.txt& # 39;, content.toString ()); }nodejs的爬虫框架搞有什么用