网页爬虫抓取百度图片( 图片有点土鳖,随手选的求大神指教,有办法解决吗?)

优采云 发布时间: 2021-10-13 21:17

  网页爬虫抓取百度图片(

图片有点土鳖,随手选的求大神指教,有办法解决吗?)

  使用Node服务器发起HTTP请求无法获取百度图片

  目标

  在 Node.js 环境中,如果要完成一个通过 URL 将对应图片下载到服务器的功能,思路是使用 http.request 向 URL 发起请求,并将请求的图片文件保存在某个服务器的目录。

  问题

  但是在请求百度图片上的图片url时,即使设置了各种请求头,仍然无法请求到正确的文件,总是返回一个内容被禁止写入的html文件。

  新问题

  我刚刚在另一台计算机上打开时发现下面的链接是403。然而!太奇妙了!我自己电脑清了缓存,换了浏览器也能打开!为什么是这样!? 而且可以排除ip的因素,因为我可以在家里和公司开同一台电脑!(╯‵□′)╯︵┻━┻

  图片链接是:

  (图片有点乌龟,我随意选的)

  附上浏览器请求信息

  代码

  图片链接是:

  (图片有点乌龟,我随意选的)

  我的请求代码:

  // 请求图片地址

let imgRequest = http.request(requestOption,(resImg) => {

let imgData = "";

resImg.setEncoding("binary");

resImg.on("data",function(chunk) {

imgData += chunk;

});

resImg.on("end",function(){

console.log('end');

fs.writeFile(filePathName,imgData,"binary",function(err){

if(err){

//图片写入失败

res.status(500).send({error:'Can\'t download image by URL: '+imgURL});

console.log("down fail");

}else{

res.send('Dowload suceess!');

}

})

})

});

imgRequest.on("error",function(e){

//图片下载失败

res.status(500).send({error:'Can’t download image by URL: '+imgURL});

console.log(e);

});

imgRequest.end();

  我的请求配置内容:

  let requestOption = {

method: 'get',

hostname: "img1.imgtn.bdimg.com",

port: 80,

path: "/it/u=1794894692,1423685501&fm=23&gp=0.jpg",

timeout: 5000,

header: {

"Upgrade-Insecure-Requests": 1,

"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36",

"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",

"Accept-Encoding": "gzip, deflate, sdch",

"Accept-Language": "zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4",

"Referer" : "http://img1.imgtn.bdimg.com/it/u=1794894692,1423685501&fm=23&gp=0.jpg",

"Host": "img1.imgtn.bdimg.com"

}

};

  下载文件的内容

  

403 Forbidden

403 Forbidden

JSP3/2.0.14

  请教

  请教各位大神,出现这个问题的原因是什么?有办法解决吗?

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线