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中实现sleep功能实例
Mar 24 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
详解nodejs通过代理(proxy)发送http请求(request)
Sep 22 NodeJs
nodejs实现简单的gulp打包
Dec 21 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
nodejs和react实现即时通讯简易聊天室功能
Aug 21 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
深入理解javascript中return的作用
2013/12/30 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python 字符串操作方法大全
2014/03/11 Python
使用Python开发windows GUI程序入门实例
2014/10/23 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
对Python中range()函数和list的比较
2018/04/19 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
python处理csv中的空值方法
2018/06/22 Python
python 阶乘累加和的实例
2019/02/01 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
英国网上购买门:Direct Doors
2018/06/07 全球购物
酒店副总岗位职责
2013/12/24 职场文书
《中彩那天》教学反思
2014/02/22 职场文书
高中军训感言400字
2014/02/24 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
争先创优演讲稿
2014/09/15 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
防汛通知
2015/04/25 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android