我使用了三个lib请求url返回相同的错误。
网址:https://comment.bilibili.com/558679896.xml
Axios错误:
错误:在Zlib.zlibOnError as onerror { errno:-3,代码:'Z_DATA_ERROR',
有错误:
ode:内部/过程/承诺:246个triggerUncaughtException(err,true /* fromPromise */);^
错误:在Zlib.zlibOnError as onerror { errno:-3,代码:'Z_DATA_ERROR‘}上的头检查不正确
节点http:
const zlib = require('zlib');
const http = require('http');
const fs = require('fs');
const { pipeline } = require('stream');
const request = http.get({ host: 'comment.bilibili.com',
path: '/558679896.xml',
port: 80,
headers: { 'Accept-Encoding': 'br,gzip,deflate' } });
request.on('response', (response) => {
const output = fs.createWriteStream('example.com_index.html');
const onError = (err) => {
if (err) {
console.error('An error occurred:', err);
process.exitCode = 1;
}
};
switch (response.headers['content-encoding']) {
case 'br':
pipeline(response, zlib.createBrotliDecompress(), output, onError);
break;
// 或者,只需使用 zlib.createUnzip() 来处理以下两种情况:
case 'gzip':
pipeline(response, zlib.createGunzip(), output, onError);
break;
case 'deflate':
pipeline(response, zlib.createUnzip(), output, onError);
break;
default:
pipeline(response, output, onError);
break;
}
});got:
const stream = require('stream');
const {promisify} = require('util');
const fs = require('fs');
const got = require('got');
const pipeline = promisify(stream.pipeline);
const zlib = require('zlib');
(async () => {
await pipeline(
got.stream('https://comment.bilibili.com/558679896.xml', {
decompress: false,
headers: { 'Accept-Encoding': 'deflate' }
}).setEncoding('utf8'),
zlib.createUnzip(),
fs.createWriteStream('1.xml')
);
})();
got('https://comment.bilibili.com/558679896.xml')
.then(res => {
console.log(res)
})
.catch(err => {
console.log(err)
})axios:
const axios = require('axios');
const fs = require('fs');
const zlib = require('zlib');
axios('https://comment.bilibili.com/558679896.xml', {
decompress: false,
responseType: 'stream',
transformResponse(data) {
try {
return data.pipe(zlib.createUnzip())
} catch (e) {
return data
}
}
})
.then(res => {
res.data.pipe(fs.createWriteStream('1.xml'))
})
axios('https://comment.bilibili.com/558679896.xml')
.then(res => {
console.log(res.data)
})
.catch(err => {
console.log(err)
})发布于 2022-04-29 15:01:46
是工作!
const fs = require('fs');
const got = require('got');
const { inflateRawSync } = require('zlib');
async function main () {
const bufferData = await got('https://comment.bilibili.com/558679896.xml', {
decompress: false
}).buffer();
console.log(inflateRawSync(bufferData).toString())
}
main()https://stackoverflow.com/questions/71703837
复制相似问题