视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
node如何爬取网页中的图片(附代码)
2020-11-27 19:32:11 责编:小采
文档
本篇文章给大家带来的内容是关于node如何爬取网页中的图片(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

目录

  • 安装node,并下载依赖

  • 搭建服务

  • 请求我们要爬取的页面,返回json

  • 安装node

    我们开始安装node,可以去node官网下载https://nodejs.org/zh-cn/,下载完成后运行node使用,

    node -v

    安装成功后会出现你所安装的版本号。

    接下来我们使用node, 打印出hello world,新建一个名为index.js文件输入

    console.log('hello world')

    运行这个文件

    node index.js

    就会在控制面板上输出hello world

    搭建服务器

    新建一个·名为node的文件夹。

    首先你需要下载express依赖

    npm install express

    再新建一个名为demo.js的文件 目录结构如图:

    在demo.js引入下载的express

    const express = require('express');
    const app = express();
    app.get('/index', function(req, res) {
    res.end('111')
    })
    var server = app.listen(8081, function() {
     var host = server.address().address
     var port = server.address().port
     console.log("应用实例,访问地址为 http://%s:%s", host, port)
    
    })

    运行node demo.js简单的服务就搭起来了,如图:

    请求我们要爬取的页面

    请求我们要爬取的页面

    npm install superagent
    npm install superagent-charset
    npm install cheerio

    superagent 是用来发起请求的,是一个轻量的,渐进式的ajax api,可读性好,学习曲线低,内部依赖nodejs原生的请求api,适用于nodejs环境下.,也可以使用http发起请求

    superagent-charset防止爬取下来的数据乱码,更改字符格式

    cheerio为服务器特别定制的,快速、灵活、实施的jQuery核心实现.。 安装完依赖就可以引入了

    var superagent = require('superagent');
    var charset = require('superagent-charset');
    charset(superagent);
    const cheerio = require('cheerio');

    引入之后就请求我们的地址,https://www.qqtn.com/tx/weixintx_1.html,如图:

    声明地址变量:

    const baseUrl = 'https://www.qqtn.com/'

    这些设置完之后就是发请求了,接下来请看完整代码demo.js

    var superagent = require('superagent');
    var charset = require('superagent-charset');
    charset(superagent);
    var express = require('express');
    var baseUrl = 'https://www.qqtn.com/'; //输入任何网址都可以
    const cheerio = require('cheerio');
    var app = express();
    app.get('/index', function(req, res) {
     //设置请求头
     res.header("Access-Control-Allow-Origin", "*");
     res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
     res.header("Access-Control-Allow-Headers", "X-Requested-With");
     res.header('Access-Control-Allow-Headers', 'Content-Type');
     //类型
     var type = req.query.type;
     //页码
     var page = req.query.page;
     type = type || 'weixin';
     page = page || '1';
     var route = `tx/${type}tx_${page}.html`
     //网页页面信息是gb2312,所以chaeset应该为.charset('gb2312'),一般网页则为utf-8,可以直接使用.charset('utf-8')
     superagent.get(baseUrl + route)
     .charset('gb2312')
     .end(function(err, sres) {
     var items = [];
     if (err) {
     console.log('ERR: ' + err);
     res.json({ code: 400, msg: err, sets: items });
     return;
     }
     var $ = cheerio.load(sres.text);
     $('div.g-main-bg ul.g-gxlist-imgbox li a').each(function(idx, element) {
     var $element = $(element);
     var $subElement = $element.find('img');
     var thumbImgSrc = $subElement.attr('src');
     items.push({
     title: $(element).attr('title'),
     href: $element.attr('href'),
     thumbSrc: thumbImgSrc
     });
     });
     res.json({ code: 200, msg: "", data: items });
     });
    });
    var server = app.listen(8081, function() {
    
     var host = server.address().address
     var port = server.address().port
    
     console.log("应用实例,访问地址为 http://%s:%s", host, port)
    
    })

    运行demo.js就会返回我们拿到的数据,如图:

    一个简单的node爬虫就完成了。

    下载本文
    显示全文
    专题