2017-08-20 76 views
3

我有這個腳本,從指定的Web 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是從遠程站點下載每個流氓文件的大小。
  • 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) 
相關問題