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(三)--- Node.js模块
May 25 NodeJs
nodejs npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
Nodejs如何搭建Web服务器
Mar 28 NodeJs
详解nodejs与javascript中的aes加密
May 22 NodeJs
浅析Nodejs npm常用命令
Jun 14 NodeJs
nodeJs内存泄漏问题详解
Sep 05 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
图片上传之FileAPI与NodeJs
Jan 24 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
NodeJs操作MongoDB教程之分页功能以及常见问题
Apr 09 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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
不要小看注释掉的JS 引起的安全问题
2008/12/27 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
js调用后台servlet方法实例
2013/06/09 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
django创建最简单HTML页面跳转方法
2019/08/16 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
外贸采购员岗位职责
2014/03/08 职场文书
大学生求职信例文
2014/06/29 职场文书
暑期学习心得体会
2014/09/02 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
融资合作协议书范本
2014/10/17 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
捐书仪式主持词
2015/07/04 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis