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教程之入门
Nov 21 NodeJs
nodejs下打包模块archiver详解
Dec 03 NodeJs
nodejs基础知识
Feb 03 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 NodeJs
在nodejs中创建child process的方法
Jan 26 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时间和日期函数详解
2015/05/08 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
繁简字转换功能
2006/07/19 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
CSS中position属性之fixed实现div居中
2015/12/14 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
响应式表格之固定表头的简单实现
2016/08/26 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
AngularJS自定义控件实例详解
2016/12/13 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
Angular实现响应式表单
2017/08/04 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
vue判断input输入内容全是空格的方法
2018/03/02 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
2017/11/08 Python
用Pytorch训练CNN(数据集MNIST,使用GPU的方法)
2019/08/19 Python
采购主管的岗位职责
2013/12/17 职场文书
营业员演讲稿
2013/12/30 职场文书
培训演讲稿范文
2014/01/12 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
社区平安建设汇报材料
2014/08/14 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
初中数学教学反思范文
2016/02/17 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python
Python 数据可视化之Matplotlib详解
2021/11/02 Python