python - 图片爬虫时候遇到问题 urllib.request.urlretrieve 下载到指定文件夹不成功?

查看:1616
本文介绍了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 or 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 or directory: 'd:\46975340\0.jpg'

请教给位大大,这个路径到底有什么问题没有?应该怎么写。

解决方案

在保存之前,先检查一下目录是否存在,不存在则建立

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

这篇关于python - 图片爬虫时候遇到问题 urllib.request.urlretrieve 下载到指定文件夹不成功?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆