2017-08-20 10 views
3

私は与えられたウェブURLアドレスからのすべての画像をダウンロードし、このスクリプトいる:私の質問はどのようにWindows上の特定のフォルダの場所に写真をダウンロードするには?

from selenium import webdriver 
import urllib 


class ChromefoxTest: 

    def __init__(self,url): 
     self.url=url 
     self.uri = [] 

    def chromeTest(self): 
     # file_name = "C:\Users\Administrator\Downloads\images" 
     self.driver=webdriver.Chrome() 
     self.driver.get(self.url) 
     self.r=self.driver.find_elements_by_tag_name('img') 
     # output=open(file_name,'w') 

     for i, v in enumerate(self.r): 
      src = v.get_attribute("src") 
      self.uri.append(src) 
      pos = len(src) - src[::-1].index('/') 
      print src[pos:] 
      self.g=urllib.urlretrieve(src, src[pos:]) 
      # output.write(src) 
     # output.close() 


if __name__=='__main__': 
    FT=ChromefoxTest("http://imgur.com/") 
    FT.chromeTest() 

です:どのように私は、このスクリプトは、私のWindowsマシン上の特定のフォルダの場所にすべての写真を保存するために作るのですか?

+0

あなたが今のようどのような問題に直面していますか? –

+0

入手したエラーを投稿できますか?また、Python 2でこのスクリプトを実行していますか? – TrakJohnson

+0

python 2.7で動作していますが、エラーは表示されませんが、すべての画像をダウンロードしますが、プロジェクトフォルダの下にありますので、別のフォルダに保存してください。 – ErezN

答えて

2

ファイルを保存するパスを指定する必要があります。これは、the documentation for urllib.urlretrieveで説明されています。

方法はurllib.urlretrieve(url[, filename[, reporthook[, data]]])です。 およびドキュメントは言う:

二番目の引数は、存在する場合、(不在の場合は、場所が生成された名前を持つテンポラリ・ファイルになります)にコピーするファイルの場所を指定します。

そう...

urllib.urlretrieve(src, 'location/on/my/system/foo.png') 

は、指定したフォルダに画像を保存します。

さらに、documentation for os.pathを検討することを検討してください。これらの関数は、ファイル名とパスを操作するのに役立ちます。

0

urlretrieveデフォルトでは、現在の作業ディレクトリにファイルが保存されます。あなたの作業ディレクトリを使用すると、要求ライブラリを使用する場合は、あなたが効率的に非常に大きな画像ファイル(または小さなもの)をアップ読まとでお好みの場所に保管しておくことが手配することができ

import os 

os.chdir(r"C:\Users\Administrator\Downloads\images\") 
1

を行うことによって変更することができます明らかな方法です。

このコードを使用すると、ビーグル犬の素晴らしい画像が得られます!

  • image_urlはリモートイメージへのリンクです。
  • file_pathは、画像をローカルに保存する場所です。オプションで、ファイル名またはフルパスだけを含めることができます。
  • chunk_sizeは、リモートサイトから各slurpとともにダウンロードされるファイルのサイズです。
  • lengthは、ローカルに書き込まれる部分の実際のサイズです。私はこれをインタラクティブに行ったので、これを主に入れて、私の画面上で1024垂直の縦長のストリームを見る必要はありませんでした。

..

>>> import requests 
>>> image_url = 'http://maxpixel.freegreatpicture.com/static/photo/1x/Eyes-Dog-Portrait-Animal-Familiar-Domestic-Beagle-2507963.jpg' 
>>> file_path = r'c:\scratch\beagle.jpg' 
>>> r = requests.get(image_url, stream=True) 
>>> with open(file_path, 'wb') as beagle: 
...  for chunk in r.iter_content(chunk_size=1024): 
...   length = beagle.write(chunk) 
関連する問題