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进程管理模块forever详解
Jun 01 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
nodejs教程之入门
Nov 21 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
nodejs个人博客开发第一步 准备工作
Apr 12 NodeJs
详解nodejs express下使用redis管理session
Apr 24 NodeJs
nodejs模块学习之connect解析
Jul 05 NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 NodeJs
nodejs基于express实现文件上传的方法
Mar 19 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 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如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php里array_work用法实例分析
2015/07/13 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
js加解密 脚本解密
2008/02/22 Javascript
js获取div高度的代码
2008/08/09 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python with语句和过程抽取思想
2019/12/23 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
python主要用于哪些方向
2020/07/05 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
个人找工作的自我评价
2013/10/17 职场文书
户外拓展活动方案
2014/02/11 职场文书
安全生产责任书
2014/03/12 职场文书
合伙购房协议样本
2014/10/06 职场文书
同意转租证明
2015/06/24 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
详解Go语言中Get/Post请求测试
2022/06/01 Golang