当我使用python通过urllib2 request或urllib.urlretrieve从url保存图像时,我遇到了问题。这是图像的网址是有效的。我可以使用资源管理器手动下载它。但是,当我使用python下载图像时,无法打开该文件。我使用Mac OS预览来查看图像。谢谢!
更新:
代码如下
def downloadImage(self):
request = urllib2.Request(self.url)
pic = urllib2.urlopen(request)
print "downloading: " + self.url
print self.fileName
filePath = localSaveRoot + self.catalog + self.fileName + Picture.postfix
# urllib.urlretrieve(self.url, filePath)
with open(filePath, 'wb') as localFile:
localFile.write(pic.read())
我要下载的图片网址是 http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg
此URL有效,我可以通过浏览器保存,但python代码会下载无法打开的文件。预览说"它可能已损坏或使用预览无法识别的文件格式。" 我比较了我用Python下载的图像和我通过浏览器手动下载的图像。前者的大小要小几个字节。所以似乎该文件未完成,但我不知道为什么python无法完全下载它。
答案 0 :(得分:39)
import requests
img_data = requests.get(image_url).content
with open('image_name.jpg', 'wb') as handler:
handler.write(img_data)
答案 1 :(得分:30)
适用于Windows的示例代码:
with open('pic1.jpg', 'wb') as handle:
response = requests.get(pic_url, stream=True)
if not response.ok:
print response
for block in response.iter_content(1024):
if not block:
break
handle.write(block)
答案 2 :(得分:4)
Python代码段,用于从网址下载文件并以其名称
保存import requests
url = 'http://google.com/favicon.ico'
filename = url.split('/')[-1]
r = requests.get(url, allow_redirects=True)
open(filename, 'wb').write(r.content)
答案 3 :(得分:3)
Python3
import urllib.request
print('Beginning file download with urllib2...')
url = 'https://akm-img-a-in.tosshub.com/sites/btmt/images/stories/modi_instagram_660_020320092717.jpg'
urllib.request.urlretrieve(url, 'modiji.jpg')
答案 4 :(得分:2)
import random
import urllib.request
def download_image(url):
name = random.randrange(1,100)
fullname = str(name)+".jpg"
urllib.request.urlretrieve(url,fullname)
download_image("http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg")
答案 5 :(得分:0)
如果是Linux,请使用;您可以使用wget命令
import os
url1 = 'YOUR_URL_WHATEVER'
os.system('wget {}'.format(url1))
答案 6 :(得分:0)
import urllib.request
import os
img_url = "https://betanews.com/wp-content/uploads/2017/09/firefox-logo.jpg"
img_name = os.path.basename(img_url)
urllib.request.urlretrieve(img_url,img_name)
答案 7 :(得分:0)
任何想知道如何获取图像扩展名的人,您都可以尝试在图像url上分割字符串的方法:
str_arr = str(img_url).split('.')
img_ext = '.' + str_arr[3] #www.bigbasket.com/patanjali-atta.jpg (jpg is after 3rd dot so)
img_data = requests.get(img_url).content
with open(img_name + img_ext, 'wb') as handler:
handler.write(img_data)
答案 8 :(得分:0)
这是使用 urlib.request 包从Internet下载和保存图像的最简单方法。
在这里,您可以简单地传递图像URL(您要从中下载和保存图像的位置)和目录(您要在本地保存下载图像的位置,并使用.jpg或.png命名图像名称)我给了“ local-filename.jpg”。
Python 3
import urllib.request
imgURL = "http://site.meishij.net/r/58/25/3568808/a3568808_142682562777944.jpg"
urllib.request.urlretrieve(imgURL, "D:/abc/image/local-filename.jpg")
如果您具有来自互联网的所有图像URL,则也可以下载多张图像。只需将这些图像URL传递给for循环,代码就会自动从Internet下载图像。