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中SSL服务的性能
Jul 15 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
angular2+nodejs实现图片上传功能
Mar 27 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
nodejs读取本地中文json文件出现乱码解决方法
Oct 10 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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正则表达匹配中文问题分析小结
2012/03/25 PHP
php通过ajax实现双击table修改内容
2014/04/28 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
向JavaScript的数组中添加元素的方法小结
2015/10/24 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
bootstrap实现点击删除按钮弹出确认框的实例代码
2018/08/16 Javascript
详解react native页面间传递数据的几种方式
2018/11/07 Javascript
微信小程序里引入SVG矢量图标的方法
2019/09/20 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
解决vant title-active-color与title-inactive-color不生效问题
2020/11/03 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
深入理解python对json的操作总结
2017/01/05 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
python 批量修改/替换数据的实例
2018/07/25 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
优秀员工自荐书范文
2013/12/08 职场文书
活动总结范文
2014/08/30 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
欢迎词范文
2015/01/27 职场文书
埃及王子观后感
2015/06/16 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers