nodejs制作小爬虫功能示例


Posted in NodeJs onFebruary 24, 2020

本文实例讲述了nodejs制作小爬虫功能。分享给大家供大家参考,具体如下:

1 安装nodejs

2 安装需要模块

npm install request cheerio

3 新建js文件

4 引入

const request=require("request")
const cheerio=require("cheerio")

5 利用request模块发送请求

request('http://news.dgut.edu.cn/dgut/xydt/news_list.shtml',function(err,res){
  if(err)
  {
    console.log('请求出错');
  }
  else
  {
    var $ = cheerio.load(res.body, {decodeEntities: false});
    $('.listList').children('ul').children('li').each(function(){ //找到li元素对象然后通过each遍历
      var newsTitle = $(this).children('a').text(); //得到<a>标签的文字
      var newsTime= $(this).children('span').eq(1).text();//得到第二个<span>标签的文字
      var newsUrl= "http://news.dgut.edu.cn"+$(this).children('a').attr('href');//得到<a>标签的href的值
    item++;
    console.log("已爬取"+item+"条记录");
    });
  }
});

一个小爬虫案例就完了

附上完整代码

request('http://news.dgut.edu.cn/dgut/xydt/news_list.shtml',function(err,res){
  if(err)
  {
    console.log('请求出错');
  }
  else
  {
    var $ = cheerio.load(res.body, {decodeEntities: false});
    $('.listList').children('ul').children('li').each(function(){ //找到li元素对象然后通过each遍历
      var newsTitle = $(this).children('a').text(); //得到<a>标签的文字
      var newsTime= $(this).children('span').eq(1).text();//得到第二个<span>标签的文字
      var newsUrl= "http://news.dgut.edu.cn"+$(this).children('a').attr('href');//得到<a>标签的href的值
    item++;
    console.log("已爬取"+item+"条记录");
    });
  }
});

下面的带数据库

const request=require("request")
const cheerio=require("cheerio")
const mysql=require('mysql')
const db=mysql.createPool({host:'120.79.5554',user:'root',password:'root',database:'pachong'});
var item=0;
request('http://news.dgut.edu.cn/dgut/xydt/news_list.shtml',function(err,res){
  if(err)
  {
    console.log('请求出错');
  }
  else
  {
    var $ = cheerio.load(res.body, {decodeEntities: false});
    $('.listList').children('ul').children('li').each(function(){ //找到li元素对象然后通过each遍历
      var newsTitle = $(this).children('a').text(); //得到<a>标签的文字
      var newsTime= $(this).children('span').eq(1).text();//得到第二个<span>标签的文字
      var newsUrl= "http://news.dgut.edu.cn"+$(this).children('a').attr('href');//得到<a>标签的href的值
      console.log(newsTitle,newsTime,newsUrl)
      db.query(`INSERT INTO news (newsTitle, newsTime, newsUrl) VALUE('${newsTitle}', '${newsTime}','${newsUrl}')`,function(err,data){
      if(err)
      {
        console.log("数据库连接错误");
      }
    })
    item++;
    console.log("已爬取"+item+"条记录");
    });
  }
});

希望本文所述对大家node.js程序设计有所帮助。

NodeJs 相关文章推荐
NodeJS 模块开发及发布详解分享
Mar 07 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
Nodejs中的this详解
Mar 26 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 #NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 #NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 #NodeJs
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
Feb 06 #NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 #NodeJs
nodejs实现的http、https 请求封装操作示例
Feb 06 #NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 #NodeJs
You might like
学习php设计模式 php实现访问者模式(Visitor)
2015/12/07 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
js实现文字滚动效果
2016/03/03 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
Python实现使用dir获取类的方法列表
2019/12/24 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
pytorch 计算Parameter和FLOP的操作
2021/03/04 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
Linux上比较文件的命令都有哪些
2012/02/24 面试题
初中生学习的自我评价
2013/11/14 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
导游词范文
2015/02/13 职场文书
护士医德考评自我评价
2015/03/03 职场文书
2015年资料员工作总结
2015/04/25 职场文书
检察院起诉书
2015/05/20 职场文书
看上去很美观后感
2015/06/10 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android