2012-12-01 1 views
1

je veux télécharger aujourd'hui le papier peint bing par Node.js,utilisation NodeJS pour télécharger le fond d'écran de bing

d'abord, je peux télécharger des images à partir d'autres sites,

mais je ne peux pas télécharger la photo de bing, même si je peux voir la photo dans mon navigateur

l'exemple de l'image src est: "http://www.bing.com/az/hprichbg?p=rb%2fYosemiteSnow_EN-US7191433727_1920x1200.jpg "

voici m y code de base

var download_file_httpget = function(file_url) { 
    var options = { 
     host: url.parse(file_url).host, 
     port: 80, 
     path: url.parse(file_url).pathname, 
     headers: {} 
    }; 
    var file_name = '11.jpg'; 
    var file = fs.createWriteStream(download_path + "\\" + file_name); 
    http.get(options,function(res) { 
     res.on('data',function(data) { 
      file.write(data); 
     }).on('end',function() { 
      file.end(); 
      console.log('download success'); 
     }); 
    }); 
}; 

par exemple, la taille de l'image orginal est 200k, mais il ne télécharger 20k, et je doute que ce soit à cause de la « referer » dans l'en-tête, quand j'ajoute l'en-tête, le problème fixé dans certains sites oher, mais il dosen't encore du travail pour bing

+1

Que se passe-t-il lorsque vous essayez? – Dennis

+0

par exemple, la taille de la photo originale est 200k, mais elle ne télécharge que 20k, et je doute que c'est à cause du referer dans l'en-tête, quand j'ajoute l'en-tête, le problème est résolu t travail pour bing – rppig

Répondre

1

Passage à

path: url.parse(file_url).path, 

comprendra la chaîne de requête et vous obtenez le fichier entier.

Le fichier qui est téléchargé est un HTML text file, pas jpeg.

console.log(url.parse(file_url)); 

Montre ceci:

{ 
    protocol: 'http:', 
    slashes: true, 
    host: 'www.bing.com', 
    hostname: 'www.bing.com', 
    href: 'http://www.bing.com/az/hprichbg?p=rb%2fYosemiteSnow_EN-US7191433727_1920x1200.jpg', 
    search: '?p=rb%2fYosemiteSnow_EN-US7191433727_1920x1200.jpg', 
    query: 'p=rb%2fYosemiteSnow_EN-US7191433727_1920x1200.jpg', 
    pathname: '/az/hprichbg', 
    path: '/az/hprichbg?p=rb%2fYosemiteSnow_EN-US7191433727_1920x1200.jpg' 
} 

Puisque vous utilisez pathname, l'URL est:

http://www.bing.com/az/hprichbg 

si Bing ne sait pas quelle image pour revenir.

Questions connexes