引言
我们要搭个简单的web服务,为我们的爬虫提供几个API,python和nodejs都是不错的选择。Express是个简洁而灵活的nodejs Web应用框架,用其可以快速地搭建一个完整功能的网站。
安装Express
按上篇(https://ask.hellobi.com/blog/jasmine3happy/11882)配置好环境后,我们就来安装express,有几个重要的模块是需要与express框架一起安装的。
cnpm install express --save
cnpm install body-parser --save
cnpm install cookie-parser --save
cnpm install multer --save
这里说明下这几个模块的功能。
body-parser: 用于处理JSON,Raw,Text和URL编码的数据。
cookie-parser:解析Cookie的工具。可以通过req.cookies取到传递的cookie,并把它们转成对象。
multer:用于处理enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。
简单应用
入门例子这个页面上有(http://www.runoob.com/nodejs/nodejs-express-framework.html),可以对照着敲一敲,我在这不多加演示了。我需要express主要是为搭个爬虫的中间服务用的,我也就以此简单举例。
const express = require('express')
const bodyParser = require("body-parser");
const request = require('request');
const app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
var requestAction = function (url) {
return new Promise(function (resolve, reject) {
request({url: url}, function (error, response, body) {
if (error) return resolve('');
resolve(body);
})
});
};
app.post('/', function (req, res) {
// post中的参数url
var url=req.body.url;
console.log('即将访问:' + url);
// post中的参数operator
var operator=req.body.operator;
console.log('自定义操作:' + operator);
(async() => {
//异步返回url的网页源码
var html= await requestAction(url);
res.send(html);
})();
console.log('------访问成功--------');
})
app.listen(5000, function () {
console.log("-----程序启动-----")
})
将上述代码写入新的文件,如 node_learn.js中,保存并运行。
然后我们在python中尝试用requests.post()来访问一下吧。
import requests
url = 'http://localhost:5000/' # 上述nodejs运行在本地,监听端口为5000
paras = {'url':'https://www.hellobi.com/',
'operator':''
}
res = requests.post(url, data=paras)
print(res.text)
说明我们用nodejs搭建的web服务是有效的,成功返回数据了。