注:本文只討論技術不涉及商業,如有侵權請告知,未經本人同意轉載后果自負!
本文是通過瀏覽器端ajax,node端request-json進行爬取”尤果網“部分圖片資源,純屬技術方面興趣,不涉及商業方面;
先上圖:
如果沒有node基礎請自行學習~
獲取圖片原理:通過request請求html文件,利用正則匹配圖片路徑獲取到當前頁面圖片的數組,發送到瀏覽器端,進行展示;
1.安裝request-json (cnpm i request-json --save)
2.安裝express(cnpm i express --save)
3.新建一個app.js文件,作為server文件,代碼如下
const express = require("express");
const morgan = require('morgan');
const ejs = require('ejs');
const path = require('path');
const bodyParser = require('body-parser');
const app = express();
//logs info to server
app.use(morgan('dev'));
//post resolve
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
// view engine setup
app.engine('html', ejs.__express);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
//設置靜態文件如:圖片, CSS, JavaScript 等。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(express.static(path.join(__dirname, 'public')));
/*
* reuire pages
*/
var index = require('./routes/index')
/*
* render pages
*/
app.use('/', index);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error', {
"title": '404',
"msg": '服務異常'
});
});
module.exports = app;
app.listen(3000,function(){
console.log('http://127.0.0.1:3000')
});
此時服務運行在3000端口;
4.請求html頁面:
router.all("/getUGirls",function(req,res,next){
正則部分代碼(……)
client.get(url,function(err, response, body) {
if((typeof body)!="string"){
body = JSON.stringify(body);
}
arr =body.match(reg);
console.log(arr);
//這里就是當前頁面的路徑以及頁面上圖片列表的數組,通過res.json發送到client;
res.json({"url":url,"records":arr});
});
})
該方法適用於頁面url有規則,並且頁面中圖片路徑有規則的任何網站的圖片爬取;
不說了,看圖去了