介绍
这篇文章给大家分享的是有关NodeJs如何实现简单的爬虫功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
1。爬虫:爬虫,是一种按照一定的规则,自动地抓取网页信息的程序或者脚本;利用NodeJs实现一个简单的爬虫案例,爬取老板直聘网站的网络前端相关的招聘信息,以广州地区为例,
2。脚本所用到的NodeJs模块
express ,,,用来搭建一个服务,将结果渲染到页面
,,,swig ,,,,,,,,模板引擎
,,,cheerio ,,,,用来抓取页面的数据
,,,requests ,,用来发送请求数据(具体可查:https://www.npmjs.com/package/requests)
,,,async ,,,,,,用来处理异步操作,解决请求嵌套的问题,脚本中只使用了async.whilst(测试、iteratee回调),具体可见:https://caolan.github.io/async/
3。实现流程:
,,首先先获取到所爬取页面的URL,打开老板直聘网站,搜索网前端既可以获取到https://www.zhipin.com/c101280100-p100901/?page=1& ka=页面
,,然后通过Chrome浏览器打开F12,获取到信息中多对应的dom节点,即可知道想要获取信息;
,,4 .代码实现
,,,,,目录结构:
,,,,,app.js
var cheerio =,要求(& # 39;加油# 39;); var requests =,要求(& # 39;请求# 39;); var async =,要求(& # 39;异步# 39;); var express =,要求(& # 39;表达# 39;); var swig =,要求(& # 39;痛饮# 39;); var app =,表达(); swig.setDefaults({缓存:假}); app.set(& # 39;观点# 39;,& # 39;。/视图/& # 39;); app.set (& # 39; view 引擎# 39;,& # 39;html # 39;); app.engine (& # 39; html # 39;, swig.renderFile); app.get(& # 39;/& # 39;函数(下)要求,res, { ,var page =, 1,,//当前页数 ,var list =,[];,//保存记录 ,async.whilst ( 函数才能(){ ,,return page & lt;, 11; ,,}, 函数(回调){才能 ,,请求(“https://www.zhipin.com/c101280100-p100901/?page=${页面},ka=页面') ,,碧绿(& # 39;数据# 39;,函数(块){ ,,var $,=, cheerio.load (chunk.toString ()); ,,美元(& # 39;.job-primary& # 39;) . each(函数(){ ,,,var company =,(这);美元(& # 39;.info-company  .company-text . name # 39;)。text (); ,,,var job_title =,(这);美元(& # 39;.info-primary  .name .job-title& # 39;)。text (); ,,,var salary =,(这);美元(& # 39;.info-primary  .name .red& # 39;)。text (); ,,,var description =,(这);美元(& # 39;.info-company  .company-text p # 39;)。text (); ,,,var area =,(这);美元(& # 39;.info-primary p # 39;)。text (); ,,,var item =, { ,,,,公司:公司, ,,,,job_title: job_title, ,,,,工资:工资, ,,,,描述:描述, ,,,,面积:区域 ,,,}; ,,,list.push(项); ,,}); 页面,,+ +; ,,回调(); ,,})。(& # 39;结束# 39;函数(err) { ,,,,如果(err) { ,,,,,console.log(错); ,,,,} ,,,,如果(==10页){ ,,,,res.render(& # 39;指数# 39;,{ ,,,,,列表:列表 ,,,,}); ,,,} ,,}); ,,}, 函数才能(err) { ,,console.log(错); ,,} ,); });//监听 app.listen (8080),
视图/索引。html页面
& lt; ! DOCTYPE html> & lt; html  lang=癳n"祝辞 & lt; head> ,& lt; meta charset=癠TF-8"比; ,& lt; title> Document & lt;/head> & lt; style> {,表 宽度:1300 px;才能 边境才能:1 px solid # ccc; ,,border-collapse:崩溃; ,,text-align:中心; 保证金才能:0,汽车; ,} ,td、tr、th { 边境才能:1 px solid # ccc; ,,border-collapse:崩溃; ,} ,tr { 高度:才能30 px; ,,行高:30 px; ,} & lt;/style> & lt; body> ,& lt; table> & lt;才能thead> ,,& lt; tr> ,,,& lt; th>公司名称& lt;/th> ,,,& lt; th>公司地址& lt;/th> ,,,& lt; th>薪资& lt;/th> ,,,& lt; th>公司描述& lt;/th> ,,,& lt; th>岗位名称& lt;/th> ,,& lt;/tr> & lt;才能/thead> null null null null null null null null null null null null null nullNodeJs如何实现简单的爬虫功能