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的url截取模块url-extract的使用实例
Nov 18 NodeJs
NodeJS Web应用监听sock文件实例
Feb 18 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
详解nodejs 文本操作模块-fs模块(二)
Dec 22 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
Nodejs把接收图片base64格式保存为文件存储到服务器上
Sep 26 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
Nodejs实现WebSocket代码实例
May 19 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函数
2006/12/06 PHP
php的慢速日志引起的Mysql错误问题分析
2014/05/13 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
PHP扩展安装方法步骤解析
2020/11/24 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
百度地图api应用标注地理位置信息(js版)
2013/02/01 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
2013/03/18 Javascript
带左右箭头图片轮播的JS代码
2013/12/18 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
jQuery pagination分页示例详解
2018/10/23 jQuery
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
Python with用法实例
2015/04/14 Python
Python中文竖排显示的方法
2015/07/28 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python matplotlib学习笔记之坐标轴范围
2019/06/28 Python
python opencv实现证件照换底功能
2019/08/19 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
国际知名军事风格休闲装品牌:Alpha Industries(阿尔法工业)
2017/05/24 全球购物
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
大学生求职自我评价
2014/01/16 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
MySQL分布式恢复进阶
2022/07/23 MySQL