1. urllib下载图片
  2. urllib3下载图片

Urllib下载图片

 from urllib import request
import re
import os # 妹子图首页 下载首页的几张
url = 'https://www.mzitu.com'
# Request对象添加请求头方法一:数据为字典类型
headers = {
'User-Agent': 'Mozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36 '
}
# 创建Request实例 将url和请求头传入
req = request.Request(url, headers=headers) # 发起连接,返回的是一个对象,不使用代理
data = request.urlopen(req) # 用read()方法,读取返回对象中的内容,取出每张图片的url
img_urls = re.findall("data-original='(.*?)'", data.read().decode())
# 以数字给图片命名
name = 1
# 根据每张图片的url循环下载
for img_url in img_urls:
# 每张图片的url
print(img_url)
# 创建新的Request对象,将url传入
req_img = request.Request(url=img_url)
# Request对象添加请求头方法二:数据为元组类型
req_img.add_header('Referer', url)
img_data = request.urlopen(req_img)
# 判断是否存在这个目录、是否创建过一次
if name == 1 and not os.path.exists('urllib_img_test'):
os.mkdir('urllib_img_test')
# 判断是否第一次进入文件夹
if name == 1:
# 进入创建的文件夹
os.chdir('urllib_img_test')
img_name = str(name) + '.jpg'
# 保存图片
with open(img_name, 'wb') as f:
f.write(img_data.read())
name += 1

Urllib下载图片

Urllib3下载图片

 import urllib3
import re
import time
import os # 判断文件夹是否存在,不存在就创建
if not os.path.exists('urllib3_img_test'):
os.mkdir('urllib3_img_test')
# 进入文件夹
os.chdir('urllib3_img_test') # 妹子图首页 下载首页几个主题里面的所有图片
url = 'https://www.mzitu.com'
# 禁用警告
urllib3.disable_warnings()
req = urllib3.PoolManager()
# 添加请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130328 Firefox/21.0'
}
# 发起请求
res = req.request('get', url, headers=headers)
# 取出数据
datas = re.findall('<li><a href=.*</li>',res.data.decode()) for data in datas:
# 进入各个主题的url 取出的两个url是一样的,选一个就行了
type_imgs = re.findall('href="(.*?)"',data)[0]
# 主题的标题,取出来做文件夹名称
type_name = re.findall(" alt='(.*?)'",data)[0]
# 判断标题里是否有+,加斜杆转义,不影响正则判断
if '+' in type_name:
type_name = type_name.replace('+', '\+')
print(type_name,type_imgs)
# 进入各个主题,下载主题里的所有图片
type_data = req.request('get',type_imgs,headers=headers).data.decode()
# 图片的url
url_img = re.findall('{}.*" ><img src="(.*?)".*{}'.format(type_imgs, type_name), type_data)
# 每个主题的图片数量
num = int(re.findall('上一组.*<span>(.*)</span>.*下一页', type_data)[0])
for i in range(1, num + 1):
# 每张图片的url 在主题url后面加数字
url_img = type_imgs + '/' + str(i)
print(url_img)
# 对每张图片的url发起请求
temp_url = req.request('get', url_img, headers=headers).data.decode()
# 每张图片的url
urls_img = re.findall('{}.*src="(.*?)".*{}'.format('https://www.mzitu.com', type_name), temp_url)[0]
print(urls_img)
# 请求头添加 referer
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130328 Firefox/21.0',
'Referer': url_img
}
# 获得图片的内容,保存到本地
img_content = req.request('get', urls_img, headers=headers).data
# 判断标题里是否有斜杆,有就去掉
if '\\' in type_name:
type_name = type_name.replace('\\','')
# 判断文件夹是否存在,不存在就创建
if i ==1 and not os.path.exists(type_name):
os.mkdir(type_name)
# 进入文件夹
os.chdir(type_name)
img_name = str(i) +'.jpg'
with open(img_name, 'wb') as f:
f.write(img_content)
time.sleep(0.2)
# 返回上一级菜单创建新的文件夹下载其它主题的图片
os.chdir('..')
time.sleep(0.2)

Urllib3下载图片

使用Urllib下载图片的更多相关文章

  1. python3 中自带urllib库可下载图片到本地

    刚从python3下载图片的语句python2的不太一样,具体python3语句如下: form urllib import request jpg_link = '......'  #图片链接 re ...

  2. python——批量下载图片

    前言 批量下载网页上的图片需要三个步骤: 获取网页的URL 获取网页上图片的URL 下载图片 例子 from html.parser import HTMLParser import urllib.r ...

  3. 用Scrapy爬虫下载图片(豆瓣电影图片)

    用Scrapy爬虫的安装和入门教程,这里有,这篇链接的博客也是我这篇博客的基础. 其实我完全可以直接在上面那篇博客中的代码中直接加入我要下载图片的部分代码的,但是由于上述博客中的代码已运行,已爬到快九 ...

  4. 从url下载图片--java与python实现方式比较

    从url下载图片--java与python实现方式比较 博客分类: 技术笔记小点滴 javapython图片下载  一.java的实现方式 首先读取图片 //方式一:直接根据url读取图片 priva ...

  5. Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)

    1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问和带宽是巨大的挑战,对于高并发和大访问访问量的站点来说,需要使用AJAX相关的技术 ...

  6. requests库下载图片的方法

    方法: 传入图片url,requests.get()方法请求一下,将源码以二进制的形式写在本地即可. 以前一直以为requests库中有特定的方法获取图片,类似urllib.request.urlre ...

  7. Python 爬虫之下载图片

    from urllib import request import json #---------获取网页源代码-------------- def getHtml(url): response=re ...

  8. 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签

    第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需 ...

  9. Python学习---网页爬虫[下载图片]

    爬虫学习--下载图片 1.主要用到了urllib和re库 2.利用urllib.urlopen()函数获得页面源代码 3.利用正则匹配图片类型,当然正则越准确,下载的越多 4.利用urllib.url ...

随机推荐

  1. Python 條件式 Condition

    除了重複使用Function,有時我們須檢查結果,依此判斷下個步驟該怎麼進行,如此就需要條件式 condition statement. if ... elif ... ese ( 或 if ... ...

  2. 【转】java的string中,关于split空串总会返回单个元素的数组

    原地址:http://blog.sina.com.cn/s/blog_6f3da9650102x03c.html public class Split { public static void mai ...

  3. CSAPP 3 程序的机器级表示

    1 本章总述 1) 通过让编译器产生机器级程序的汇编表示, 学习了编译器及其优化能力, 以及机器.数据类型和指令集; 2) 学习了程序如何将数据存储在不同的内存区域中 -- 程序开发人员需要知道一个变 ...

  4. django之ORM字段及参数

    目录 ORM字段及参数 orm常用字段 字段合集 自定义char字段 字段参数 外键字段的参数 ORM字段及参数 orm常用字段 字段名 说明 AutoField 如果自己没有定义主键id,djang ...

  5. GNS3 2.18 + ASA(IOU)

    使用软件及版本 地址:https://www.gns3.com/ gns3: 2.1.18 ASA:asa842-initrd asa842-vmlinuz 一.gns3 vm安装 1.安装 注意:启 ...

  6. 【转】Cookie和Session和Cache

    1 Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. Session可以用Cookie来实 ...

  7. UVA1401 Remember the word DP+Trie

    问题描述 洛谷(有翻译) 题解 DP,设\(opt_i\)代表前\(i\)个字符方案数. Trie优化,刷表法. \(\mathrm{Code}\) #include<bits/stdc++.h ...

  8. 小程序-小菊花loading

    界面----交互 wx.showLoading() 显示loading提示框.需主动调用wx.hideLoading()才能关闭提示框 参数: 属性 类型 默认值 必填 说明 title string ...

  9. Mysql中事务ACID实现原理

    引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?"你:"懂,ACID嘛,原子性(Atomicity).一致性(Consistency).隔离性(Isola ...

  10. 2019南昌网络赛H The Nth Item(打表找询问循环节 or 分段打表)

    https://nanti.jisuanke.com/t/41355 思路 从fib循环节入手,\(O(1e7log(1e9))\),tle 因为只需要输出所有询问亦或后的结果,所以考虑答案的循环节, ...