python下载网络上一张图片(python怎么下载图片)

本文目录一览:

python下载图片到本地路径

这里有2种方法,我这里是因为要保存验证码到本地:

执行一遍后取路径查看,

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

Part 1. urllib2

urllib2是Python标准库提供的与网络相关的库,是写爬虫最常用的一个库之一。

想要使用Python打开一个网址,最简单的操作即是:

your_url = “”html = urllib2.urlopen(your_url).read()12

这样所获得的就是对应网址(url)的html内容了。

但有的时候这么做还不够,因为目前很多的网站都有反爬虫机制,对于这么初级的代码,是很容易分辨出来的。例如本文所要下载图片的网站,上述代码会返回HTTPError: HTTP Error 403: Forbidden错误。

那么,在这种情况下,下载网络图片的爬虫(虽然只有几行代码,但一个也可以叫做爬虫了吧,笑),就需要进一步的伪装。

要让爬虫伪装成浏览器访问指定的网站的话,就需要加入消息头信息。所谓的消息头信息就是在浏览器向网络服务器发送请求时一并发送的请求头(Request Headers)信息和服务器返回的响应头(Response Headers)信息。

例如,使用FireFox打开时所发送的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 = ” + str(i) + ‘/’

req = urllib2.Request(url = url, headers = headers)

content = urllib2.urlopen(req).read()

hp.feed(content)

hp.close()1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950

使用Python爬虫下载图片,得到的图片不显示?

你需要检查一下你的结果,看看是否请求成功了。可能服务器返回的并不是一个图片,但是你强制给他写入到图片格式文件中了,所以没办法显示。

你可以通过输出response或者使用抓包软件来检查。

python抓取网页上图片

正则表达式匹配的url有错误

for x in add:

print x # 这里可以看到报错的时候是 url 错误

dirpath = os.path.join(‘C:\\Users\\lilinan\\Desktop\\新建文件夹’,’%s.jpg’ % t)

urllib.request.urlretrieve(x,dirpath)

t+=1

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

def download_poster_image(movie):   #定义一个下载图片函数

    src = movie  #取出它的url

    r = requests.get(src)   #去获取这个url

    fname = url.split(‘/’)[-1]   #从url里面获取这个文件名

    with open(fname, ‘wb’) as f:  #应答的内容写进去并且使用二进制

        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批量下载图片

1、python有socket、httplib等模块能进行与网站间通信,如果有图片url集合,就直接使用这些库下载

2、如果是一些网页中的url,可以先把网页取下来,在用HTMLParser,sgmllib,htmllib等模块进行页面解析,提取出url集合

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/190800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-30 09:07
下一篇 2024-11-30 09:07

相关推荐

  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29

发表回复

登录后才能评论