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修复ipa处理过的png图片
Feb 17 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
详解使用PM2管理nodejs进程
Oct 24 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 NodeJs
nodejs处理tcp连接的核心流程
Feb 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里的JS打印函数
2006/10/09 PHP
php中用数组的方法设置cookies
2011/04/21 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
jquery ajax执行后台方法
2010/03/18 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
BootStrap selectpicker
2016/06/20 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
js实现动态显示时间效果
2017/03/06 Javascript
AngularJS2中一种button切换效果的实现方法(二)
2017/03/27 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
js实现简单点赞操作
2020/03/17 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
pandas的resample重采样的使用
2020/04/24 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
美国在线工具商店:Acme Tools
2018/06/26 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
高三毕业寄语
2014/04/10 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
关于保护环境的建议书
2014/05/13 职场文书
首都博物馆观后感
2015/06/05 职场文书
结婚典礼主持词
2015/06/29 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python