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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
Sep 26 NodeJs
nodejs中简单实现Javascript Promise机制的实例
Dec 06 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
Nodejs实现多文件夹文件同步
Oct 17 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
PHP之数组学习
2011/05/29 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
ThinkPHP函数详解之M方法和R方法
2015/09/10 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
jquery $.each()使用探讨
2013/09/23 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
jQuery动态添加
2016/04/07 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
下载给定网页上图片的方法
2014/02/18 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
Python 变量类型详解
2018/10/10 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
numpy.array 操作使用简单总结
2019/11/08 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
函授本科毕业自我鉴定
2013/10/09 职场文书
销售实习自我鉴定
2013/12/07 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
学期评语大全
2014/04/30 职场文书
家长学校工作方案
2014/05/07 职场文书
医院保洁服务方案
2014/06/11 职场文书
年检委托书
2014/08/30 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书