如何用Node.js编写示例代码,接入并应用百度舆情接口?
- 内容介绍
- 文章标签
- 相关推荐
本文共计536个文字,预计阅读时间需要3分钟。
本文实例介绍了如何使用Node.js实现百度情绪接口。以下是一个简化版的代码示例:
javascriptconst URL=require('url');const http=require('http');const https=require('https');const qs=require('querystring');
let trends=exp;
// 构建请求URLfunction buildUrl(query) { const params={ q: query, appid: 'your_appid', key: 'your_key' }; const queryString=qs.stringify(params); return `http://api.finance.baidu.com/stock/trends?${queryString}`;}
// 发送HTTP请求function sendRequest(url) { const options=URL.parse(url); const protocol=options.protocol==='https:' ? https : http;
const req=protocol.request(options, (res)=> { let data=''; res.on('data', (chunk)=> { data +=chunk; }); res.on('end', ()=> { console.log(data); }); });
req.on('error', (e)=> { console.error(`problem with request: ${e.message}`); });
req.end();}
// 调用函数const query='百度';const url=buildUrl(query);sendRequest(url);
本文实例讲述了nodejs实现百度舆情接口。分享给大家供大家参考,具体如下:
const URL = require('url'); const ${this.host}${uri}`; return await this.httpRequest(method, url, params, headers); } Trends.prototype.getHeaders = function (method, uri) { let authorization = this.getAuthorization(method, uri); return { 'Content-Type': 'application/x-www-form-urlencoded', 'Host': this.host, 'x-bce-date': this.utcTimestamp, 'Authorization': authorization, }; } Trends.prototype.getAuthorization = function (method, uri) { let authString = `bce-auth-v1/${this.accessKey}/${this.utcTimestamp}/${this.expireTime}`; let signinKey = _.hmac(authString, this.secretKey, 'sha256'); let header = { 'host': this.host, 'x-bce-date': _.urlencode(this.utcTimestamp) }; let headerArr = []; for (let name in header) { let val = header[name]; headerArr.push(`${name}:${val}`); } let headerKeyStr = Object.keys(header).sort().join(';'); let requestStr = `${method}\n${uri}\n\n${headerArr.join('\n')}`; let signautre = _.hmac(requestStr, signinKey, 'sha256'); return `${authString}/${headerKeyStr}/${signautre}`; } Trends.prototype.getToken = function () { return _.hmac(this.userKey + this.timestamp, this.userSecret); } Trends.prototype.httpRequest = async function (method, url, params, headers) { let urlObj = URL.parse(url); let protocol = urlObj.protocol; let options = { hostname: urlObj.hostname, port: urlObj.port, path: urlObj.path, method: method, headers: headers, timeout: 10000, }; let postData = qs.stringify(params || {}); return new Promise((resolve, reject) => { let req = (protocol == 'http:' ? http : https).request(options, (res) => { let chunks = []; res.on('data', (data) => { chunks.push(data); }); res.on('end', () => { let buffer = Buffer.concat(chunks); let encoding = res.headers['content-encoding']; if (encoding == 'gzip') { zlib.unzip(buffer, function (err, decoded) { resolve(decoded.toString()); }); } else if (encoding == 'deflate') { zlib.inflate(buffer, function (err, decoded) { resolve(decoded.toString()); }); } else { resolve(buffer.toString()); } }); }); req.on('error', (e) => { _.error('request error', method, url, params, e); resolve(''); }); req.on("timeout", (e) => { _.error('request timeout', method, url, params, e); resolve(''); }) if (method.toUpperCase() == 'POST') { req.write(postData); } req.end(); }); }
module.exports = function () { return new Script; } function Script() {} Script.prototype.run = async function () { let rst = this.getTaskList(); console.log(rst); } Script.prototype.getTaskList = async function () { let params = {}; let method = 'post'; let uri = '/openapi/getTasklist'; let rst = await _.trends.getInstance().request(method, uri, params); return rst; }
希望本文所述对大家node.js程序设计有所帮助。
本文共计536个文字,预计阅读时间需要3分钟。
本文实例介绍了如何使用Node.js实现百度情绪接口。以下是一个简化版的代码示例:
javascriptconst URL=require('url');const http=require('http');const https=require('https');const qs=require('querystring');
let trends=exp;
// 构建请求URLfunction buildUrl(query) { const params={ q: query, appid: 'your_appid', key: 'your_key' }; const queryString=qs.stringify(params); return `http://api.finance.baidu.com/stock/trends?${queryString}`;}
// 发送HTTP请求function sendRequest(url) { const options=URL.parse(url); const protocol=options.protocol==='https:' ? https : http;
const req=protocol.request(options, (res)=> { let data=''; res.on('data', (chunk)=> { data +=chunk; }); res.on('end', ()=> { console.log(data); }); });
req.on('error', (e)=> { console.error(`problem with request: ${e.message}`); });
req.end();}
// 调用函数const query='百度';const url=buildUrl(query);sendRequest(url);
本文实例讲述了nodejs实现百度舆情接口。分享给大家供大家参考,具体如下:
const URL = require('url'); const ${this.host}${uri}`; return await this.httpRequest(method, url, params, headers); } Trends.prototype.getHeaders = function (method, uri) { let authorization = this.getAuthorization(method, uri); return { 'Content-Type': 'application/x-www-form-urlencoded', 'Host': this.host, 'x-bce-date': this.utcTimestamp, 'Authorization': authorization, }; } Trends.prototype.getAuthorization = function (method, uri) { let authString = `bce-auth-v1/${this.accessKey}/${this.utcTimestamp}/${this.expireTime}`; let signinKey = _.hmac(authString, this.secretKey, 'sha256'); let header = { 'host': this.host, 'x-bce-date': _.urlencode(this.utcTimestamp) }; let headerArr = []; for (let name in header) { let val = header[name]; headerArr.push(`${name}:${val}`); } let headerKeyStr = Object.keys(header).sort().join(';'); let requestStr = `${method}\n${uri}\n\n${headerArr.join('\n')}`; let signautre = _.hmac(requestStr, signinKey, 'sha256'); return `${authString}/${headerKeyStr}/${signautre}`; } Trends.prototype.getToken = function () { return _.hmac(this.userKey + this.timestamp, this.userSecret); } Trends.prototype.httpRequest = async function (method, url, params, headers) { let urlObj = URL.parse(url); let protocol = urlObj.protocol; let options = { hostname: urlObj.hostname, port: urlObj.port, path: urlObj.path, method: method, headers: headers, timeout: 10000, }; let postData = qs.stringify(params || {}); return new Promise((resolve, reject) => { let req = (protocol == 'http:' ? http : https).request(options, (res) => { let chunks = []; res.on('data', (data) => { chunks.push(data); }); res.on('end', () => { let buffer = Buffer.concat(chunks); let encoding = res.headers['content-encoding']; if (encoding == 'gzip') { zlib.unzip(buffer, function (err, decoded) { resolve(decoded.toString()); }); } else if (encoding == 'deflate') { zlib.inflate(buffer, function (err, decoded) { resolve(decoded.toString()); }); } else { resolve(buffer.toString()); } }); }); req.on('error', (e) => { _.error('request error', method, url, params, e); resolve(''); }); req.on("timeout", (e) => { _.error('request timeout', method, url, params, e); resolve(''); }) if (method.toUpperCase() == 'POST') { req.write(postData); } req.end(); }); }
module.exports = function () { return new Script; } function Script() {} Script.prototype.run = async function () { let rst = this.getTaskList(); console.log(rst); } Script.prototype.getTaskList = async function () { let params = {}; let method = 'post'; let uri = '/openapi/getTasklist'; let rst = await _.trends.getInstance().request(method, uri, params); return rst; }
希望本文所述对大家node.js程序设计有所帮助。

