最近看《我推的孩子》大受震撼,于是打算收集漫画看看
然后想要爬 {{贴吧URL}}/p/8631227791 里的图片
F12看了一下贴吧的API接口,然后花半个小时用deno实现了
(deno,yyds!)
其实逻辑很简单的(可能这次用PHP开发更快),直接上代码
/**
* 贴吧扒源图V1
*/
const id = prompt('请输入源TID(/p/后面的那一串)');
if(!id) throw new Error('TID不为空,异常退出');
try{
var res = await (
await fetch('https://tieba.baidu.com/photo/bw/picture/guide?tid='+id)
).json();
if(res.no != 0) throw new Error(res.error);
}catch(e){
throw new Error('失败:'+e.message);
}
let result = res.data.pic_list;
for (const id in result) {
const img:string = result[id].img?.original?.waterurl;
if(!img){
console.warn('图片',id,'不包含官方图片,似乎有问题!');
continue;
}
let data;
try{
data = (await fetch(img)).body.getReader();
}catch{
console.error('爬取',img,'失败');
continue;
}
const ext = img.split('.').at(-1)?.split('?')[0];
let file = await Deno.open('output/'+id+'.'+ext,{
write: true,
read: false,
create: true
});
while(true){
let res = await data.read();
if(res.done) break;
file.write(res.value);
}
file.close();
console.log(id+'.'+ext,'saved.');
}
很简单地爬取成功
本文由 zlh 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。