搜尋

首頁  >  問答  >  主體

python - 圖片爬蟲時候遇到問題 urllib.request.urlretrieve 下載到指定資料夾不成功?

如果下載到D盤也是沒有問題的,下載到我建立的目錄下就有問題(主要是我想在D盤建立以URL這個問號前面的數字為名字的目錄如(http://v .yupoo.com/photos/196...')中的46975340就是不行,因為有很多鏈接,每個鏈接的這個數字不同,我想用這個數字作為文件夾的名字,存放這個鏈接下載下來的圖片)
原始碼如下:
import urllib.request
import re
import os

py抓取頁面圖片並儲存到本機

取得頁面資訊

url_all =['http://v.yupoo.com/photos/196...',
'http://v.yupoo.com/photos/196...',
'http://v.yupoo.com/photos/196...',
'http://v.yupoo.com/photos/196...',]

def getHtml(url):

html = urllib.request.urlopen(url).read()
return html

透過正規取得圖片

def getImg(html):

reg = 'src="(.+?\.jpg)"'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)

# print(imglist)

return imglist

for i in range(len(url_all)):

循環把圖片存到本地

html = getHtml(url_all[i])
list=getImg(html.decode())

print (url_all[1])

x = 0
for imgurl in list:
    print(x)
    filename = os.path.dirname(url_all[i])    
    filename2 = os.path.basename(filename)

os.mkdir('d:\%s'% filename2)

    local='D:\%s\%s.jpg' %(filename2,x)
    print (local)
    urllib.request.urlretrieve(imgurl,local)
    x+=1

print("done")

執行錯誤:(win10的64位元系統,python3.6)

File "C:Python36liburllibrequest.py", line 258, in urlretrieve

tfp = open(filename, 'wb')

FileNotFoundError: [Errno 2] No such file 或 directory: 'd:\46975340\0.jpg'

經測試
最後一句這麼寫是可以輸出的: urllib.request.urlretrieve(imgurl,'d:\%s.jpg'% str(i*10 x))

經測試 前面兩句都沒有問題,加第三句:
local='d:\%s\%s.jpg' %(filename2,x)

print (local)

urllib.request.urlretrieve(imgurl,local)

報錯資訊如下: (和上面一樣)

File "C:Python36liburllibrequest.py", line 258, in urlretrieve

tfp = open(filename, 'wb')

FileNotFoundError: [Errno 2] No such file 或 directory: 'd:\46975340\0.jpg'

請教位大大,這個路徑到底有什麼問題沒有?該怎麼寫。

给我你的怀抱给我你的怀抱2774 天前1986

全部回覆(1)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-05-18 10:56:50

    在保存之前,先檢查目錄是否存在,不存在則建立

    if not os.path.exists(file_path):
        os.mkdir(file_path)

    回覆
    0
  • 取消回覆