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极简入门教程(一):模块机制
Oct 25 NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 NodeJs
NodeJS制作爬虫全过程(续)
Dec 22 NodeJs
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
nodejs导出excel的方法
Jun 30 NodeJs
win系统下nodejs环境安装配置
May 04 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
nodejs使用async模块同步执行的方法
Mar 02 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
NodeJs生成sitemap站点地图的方法示例
Jun 11 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和javascript常用正则表达式及用法实例
2014/07/01 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
Javascript typeof 用法
2008/12/28 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
AJAX 网页保留浏览器前进后退等功能
2011/02/12 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
javascript代码调试之console.log 用法图文详解
2016/09/30 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
tensorflow获取变量维度信息
2018/03/10 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
softmax及python实现过程解析
2019/09/30 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
英语专业职业生涯规划范文
2014/03/05 职场文书
品质口号大全
2014/06/17 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
售后客服个人自我评价
2014/09/14 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
刮痧观后感
2015/06/05 职场文书
售房协议书范本
2015/08/11 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android