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. echarts背景颜色渐变的三种类型

    // 线性渐变,多用于折线柱形图,前四个参数分别是 x0, y0, x2, y2, 范围从 0 - 1,相当于在图形包围盒中的百分比,如果 globalCoord 为 `true`,则该四个值是绝对的 ...

  2. 对Android 8.0以上版本通知点击无效的一次分析

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/178 对Android 8.0以上版本通知点击无效的一次分 ...

  3. WebGL-3D地图大俯仰角的雾化处理

    腾讯位置服务Javascript API GL版,是基于WebGL技术打造的地图API库,使得浏览器环境下也可实现APP端的应用体验,提供2D/3D模式,运行流畅.当前版本提供地图展示.标记.信息窗口 ...

  4. Oracle创建表、删除表、修改表(添加字段、修改字段、删除字段)语句总结

    创建表: create table 表名 ( 字段名1 字段类型 默认值 是否为空 , 字段名2 字段类型 默认值 是否为空, 字段名3 字段类型 默认值 是否为空, ...... ); 创建一个us ...

  5. 并发编程 ~~~ 多进程~~~进程创建的两种方式, 进程pid, 验证进程之间的空间隔离, 进程对象join方法, 进程对象其他属性

    一 进程创建的两种方式 from multiprocessing import Process import time def task(name): print(f'{name} is runnin ...

  6. mongodb4版本,windows下的安装与配置(史上步骤最全最详细+图解)

    安装的是4.2.1版本,安装途中出现过很多错误,找遍各种博客基本没能解决 1.mongodb安装的官方地址: https://www.mongodb.com/download-center/commu ...

  7. Shell—实现DDOS攻击自动封禁IP

    需求:请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP. 防火墙命令为:iptables-I INPUT -s IP地址 -j DR ...

  8. Ubuntu18.04初始化

    Ubuntu18.04初始化 更新源: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo gedit /etc/apt/sour ...

  9. IntelliJ 注解@Slf4j后找不到log问题解决

    解决方案:IntelliJ IDEA安装lombok插件可以解决以上问题 .步骤:1.找到IDEA 上方的菜单栏 点击File =>Settings,或者按快捷键Ctrl+Alt+S. 2.如图 ...

  10. Python迭代器的用法,next()方法的调用

    迭代器的用法: 首先说两个概念,一个是可迭代的对象,一个是迭代器对象,两个不同 可迭代的(Iterable):就是可以for循环取数据的,比如字典.列表.元组.字符串等,不可使用next()方法. 迭 ...