导航:首页 > 编程语言 > 如何用python下载图片

如何用python下载图片

发布时间:2022-07-19 15:49:16

python 如何将大量图片的url保存到本地

你如果要保存图片的url,直接把imgsrc写入本地文件就可以了,urllib.request.urlretrieve(imgsrc)这个的意思是你要保存的不是图片的url,而是要把图片下载下来,这个是要批量爬取网站上的图片,需要考虑网站的反爬虫措施了。

② (用python下载图片)我真的不知道代码错在哪里!不知道啊!不会改啊!

你的代码没有缩进,在def xxx():后面要缩进

③ Python3.xx中写爬虫,下载图片除了urlretrieve方法,还有什么库的什么方法呢

Part 1. urllib2
urllib2是Python标准库提供的与网络相关的库,是写爬虫最常用的一个库之一。
想要使用Python打开一个网址,最简单的操作即是:
your_url = "http://publicdomainarchive.com/"html = urllib2.urlopen(your_url).read()12

这样所获得的就是对应网址(url)的html内容了。
但有的时候这么做还不够,因为目前很多的网站都有反爬虫机制,对于这么初级的代码,是很容易分辨出来的。例如本文所要下载图片的网站http://publicdomainarchive.com/,上述代码会返回HTTPError: HTTP Error 403: Forbidden错误。
那么,在这种情况下,下载网络图片的爬虫(虽然只有几行代码,但一个也可以叫做爬虫了吧,笑),就需要进一步的伪装。
要让爬虫伪装成浏览器访问指定的网站的话,就需要加入消息头信息。所谓的消息头信息就是在浏览器向网络服务器发送请求时一并发送的请求头(Request Headers)信息和服务器返回的响应头(Response Headers)信息。
例如,使用FireFox打开http://publicdomainarchive.com/时所发送的Request Headers的部分内容如下:
Host:"publicdomainarchive.com/"User-Agent:"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"Accept:"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"...1234

还有一些其他属性,但其中伪装成浏览器最重要的部分已经列出来了,即User-Agent信息。
要使用Headers信息,就不能再仅仅向urlopen方法中传入一个地址了,而是需要将HTTP Request的Headers封装后传入:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}req = urllib2.Request(url = url, headers = headers)content = urllib2.urlopen(req).read()123

这样,就获得了网站的html内容。
接下来,就需要从html去获取图片的链接。
Part 2. HTMLParser
HTMLParser是Python提供的HTML解析库之一。
但Python提供的这个类中很多方法都没有实现,因而基本上这个库只负责进行解析,但解析完了什么都不做。所以如果需要对HTML中的某些元素进行加工的话,就需要用户自己去实现其中的一些方法。本文仅实现其中的handle_starttag方法:
class MyHTMLParser(HTMLParser): #继承HTMLParser类
def __init__(self): #初始化
HTMLParser.__init__(self) def handle_starttag(self, tag, attrs):
#参数tag即由HTMLParser解析出的开始标签,attrs为该标签的属性
if tag == "img": #下载图片所需要的img标签
if len(attrs) == 0: pass
else: for (variable, value) in attrs: #在attrs中找到src属性,并确定其是我们所要下载的图片,最后将图片下载下来(这个方法当然也有其他的写法)
if variable == "src" and value[0:4] == 'http' and value.find('x') >= 0:
pic_name = value.split('/')[-1] print pic_name
down_image(value, pic_name)123456789101112131415

Part 3. 下载图片
从handle_starttag方法中,我们已经获得了图片的url,那么,最后一步,我们要下载图片了。
当然,要获得网络上的图片,自然也需要向服务器发送请求,一样需要用到urllib2这个库,也需要用到上面所用到的请求头。
以下是down_image()方法的主要代码:
binary_data = urllib2.urlopen(req).read()
temp_file = open(file_name, 'wb')
temp_file.write(binary_data)
temp_file.close()1234

因为这次打开的网址是个图片,所以urllib2.urlopen(req).read()所获取的就是图片的数据,将这些数据需要以二进制的方式写入本地的图片文件,即将图片下载下来了。
因为图片的url的最后一部分是图片的名字,所以可以直接用做本地的文件名,不用担心命名冲突,也不用担心后缀不符,很是方便。
Part 4. getFreeImages.py
这个下载图片的脚本的完整代码如下:
import urllib2,osfrom HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self) #self.links = {}

def handle_starttag(self, tag, attrs):
#print "Encountered the beginning of a %s tag" % tag
if tag == "img": if len(attrs) == 0: pass
else: for (variable, value) in attrs: if variable == "src" and value[0:4] == 'http' and value.find('x') >= 0:
pic_name = value.split('/')[-1] print pic_name
down_image(value, pic_name)def down_image(url,file_name):
global headers
req = urllib2.Request(url = url, headers = headers)
binary_data = urllib2.urlopen(req).read()
temp_file = open(file_name, 'wb')
temp_file.write(binary_data)
temp_file.close()if __name__ == "__main__":
img_dir = "D:\\Downloads\\domain images"

if not os.path.isdir(img_dir):
os.mkdir(img_dir)

os.chdir(img_dir) print os.getcwd()
url = ""
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
all_links = []
hp = MyHTMLParser() for i in range(1,30):
url = 'http://publicdomainarchive.com/public-domain-images/page/' + str(i) + '/'
req = urllib2.Request(url = url, headers = headers)
content = urllib2.urlopen(req).read()
hp.feed(content)

hp.close()041424344454647484950

④ python爬虫大神帮忙看一下啊,使用 urllib.urlretrieve()下载不到图片,具体图片看下图代码

更改一下地址啊,因为你要下载的是图片,所以要用图片后缀,改成:

work_path="E:/"+str(imgname)+".jpg"
urllib.request.urlretrieve(imgurl,work_path)

这个imgname你定义一个循环的名字即可

⑤ 求告知知道了图片的url怎么用python下下来

importurllib

img_url='http://xxx/image/pic.jpg'
save_path='/data/image/pic.jpg'

f=urllib.urlopen(img_url)
withopen(save_path,"wb")ascode:
code.write(f.read())

⑥ python 网络爬虫,怎么自动保存图片

defdownload_poster_image(movie):#定义一个下载图片函数
src=movie#取出它的url
r=requests.get(src)#去获取这个url
fname=url.split('/')[-1]#从url里面获取这个文件名
withopen(fname,'wb')asf:#应答的内容写进去并且使用二进制
f.write(s.content)
movie['poster-path']=fname
res=requests.get(url)
img_url=res.xpath('//img[@class="q-img-item"]/@src')

movie=img_url
download_poster_image(movie)#执行函数

⑦ 求大神指导:如何用python将某网站上的图片down下来

你可以搜一下python爬虫。简单说就是把网页内容得到,然后从里面得到自己想要的链接,然后下载图片。各种代码还是很多的。

⑧ python 怎么把爬到的图片保存下来

#建立单级目录
filename=r'E:\NASDownload\视频\一行代码爬视频\爬取图片以此
for i in range(0,len(imageinfo)):
path="{}{}{}{}".format(filename,'\\',i,'.jpg')
res=requests.get(url=imageinfo[i]).content
time.sleep(5)
with open(path,'wb') as f:
f.write(res)
f.close()

⑨ python3中如何加载图片

答: 如下所示。

import cv2



image = cv2.imread('./example.png')

import matplotlib.pyplot as plt



import matplotlib.image as mpimg



import numpy as np



image = mpimg.imread('./example.png')



print image.shape



plt.imshow(image) #调用imshow函数

在这里只是说了两种方法,希望能够帮助到你。

⑩ python中怎么把图中的图片链接提取出来并且下载链接对应的图片啊

你不已经提出出来了吗?
在做个下载,保存就行了。
req=request.get(img.get('src'))
picture=req.content
path=r'D:\ProgramData\picture.png'
with open(path,'wb') as f:
f.write(picture)

阅读全文

与如何用python下载图片相关的资料

热点内容
python人工智能搭建 浏览:248
安卓m6用什么下载 浏览:997
对程序员有偏见吗 浏览:292
如何让服务器运行缓慢 浏览:238
黑马程序员入学流程 浏览:448
win732位安装python什么版本 浏览:786
压缩方式标准 浏览:558
免费低吸指标源码 浏览:183
MO命令是 浏览:47
python入门常见错误 浏览:410
改加密包名 浏览:785
程序员在线编译器 浏览:247
山东兼职程序员收费标准 浏览:424
物业管理系统项目java源码 浏览:15
林皋pdf 浏览:586
vue编译后命名 浏览:732
可以发布命令的 浏览:954
安卓系统如何领取国旗 浏览:330
chromium编译linux 浏览:472
exe在线反编译工具 浏览:368