本篇文章给大家带来的内容是关于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 superagentnpm install superagent-charsetnpm 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爬虫就完成了。
相关推荐:
node爬虫之gbk网页中文乱码解决方案_html/css_web-itnose
node下的http小爬虫的示例代码分享
以上就是node如何爬取网页中的图片(附代码)的详细内容。