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中的非阻塞方法介绍
Jun 05 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
用NodeJS实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
nodeJS微信分享
Dec 20 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 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生成条形图的方法
2014/12/10 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
Prototype使用指南之range.js
2007/01/10 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
python学习笔记:字典的使用示例详解
2014/06/13 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
岗位职责范本
2013/11/23 职场文书
入党转预备思想汇报
2014/01/07 职场文书
人事科岗位职责范本
2014/03/02 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
应届生求职信范文
2014/05/26 职场文书
公司市场部岗位职责
2015/04/15 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB