使用Urllib下载图片
- urllib下载图片
- 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下载图片的更多相关文章
- python3 中自带urllib库可下载图片到本地
刚从python3下载图片的语句python2的不太一样,具体python3语句如下: form urllib import request jpg_link = '......' #图片链接 re ...
- python——批量下载图片
前言 批量下载网页上的图片需要三个步骤: 获取网页的URL 获取网页上图片的URL 下载图片 例子 from html.parser import HTMLParser import urllib.r ...
- 用Scrapy爬虫下载图片(豆瓣电影图片)
用Scrapy爬虫的安装和入门教程,这里有,这篇链接的博客也是我这篇博客的基础. 其实我完全可以直接在上面那篇博客中的代码中直接加入我要下载图片的部分代码的,但是由于上述博客中的代码已运行,已爬到快九 ...
- 从url下载图片--java与python实现方式比较
从url下载图片--java与python实现方式比较 博客分类: 技术笔记小点滴 javapython图片下载 一.java的实现方式 首先读取图片 //方式一:直接根据url读取图片 priva ...
- Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)
1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问和带宽是巨大的挑战,对于高并发和大访问访问量的站点来说,需要使用AJAX相关的技术 ...
- requests库下载图片的方法
方法: 传入图片url,requests.get()方法请求一下,将源码以二进制的形式写在本地即可. 以前一直以为requests库中有特定的方法获取图片,类似urllib.request.urlre ...
- Python 爬虫之下载图片
from urllib import request import json #---------获取网页源代码-------------- def getHtml(url): response=re ...
- 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需 ...
- Python学习---网页爬虫[下载图片]
爬虫学习--下载图片 1.主要用到了urllib和re库 2.利用urllib.urlopen()函数获得页面源代码 3.利用正则匹配图片类型,当然正则越准确,下载的越多 4.利用urllib.url ...
随机推荐
- OpenCV:获取图像当中某一点的坐标
import numpy as np image=np.zeros((300,300,3),dtype='uint8') (cx,cy)=image.shape[1]//2,image.shape[0 ...
- 缺少控制文件备份时如何还原数据库 (Doc ID 1438776.1)
How to restore database when controlfile backup missing (Doc ID 1438776.1) APPLIES TO: Oracle Databa ...
- docker上启动nginx,并配置修改nginx的配置文件
1.使用docker 下载nginx 镜像 docker pull nginx 2.启动nginx docker run --name nginx -p 80:80 -d nginx 这样就简单的把 ...
- 阿里云ubuntu 16.04 搭建pptpd 第二版
前言:1.我常用的服务器在国内,但我又有某方面的需求,所以想要搭建一个pptpd的服务器 2.但我又不常用,所以感觉阿里云包年包月的不划算,所以准备采用阿里云按量付费的实例来搭建pptpd,并形 ...
- Mac打开Finder快捷键
摘要:目前网络中较常见的打开Finder的方法有两种,要么是先进入桌面状态,再使用快捷键command + shift + c:要么是通过下载软件来设置打开Finder的快捷键.都过于繁琐,其实有很简 ...
- 【机器学习之数学】03 有约束的非线性优化问题——拉格朗日乘子法、KKT条件、投影法
目录 1 将有约束问题转化为无约束问题 1.1 拉格朗日法 1.1.1 KKT条件 1.1.2 拉格朗日法更新方程 1.1.3 凸优化问题下的拉格朗日法 1.2 罚函数法 2 对梯度算法进行修改,使其 ...
- 201871010109-胡欢欢《面向对象程序设计(java)》第十六周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- SVO 特征对齐代码分析
SVO稀疏图像对齐之后使用特征对齐,即通过地图向当前帧投影,并使用逆向组合光流以稀疏图像对齐的结果为初始值,得到更精确的特征位置. 主要涉及文件: reprojector.cpp matcher.cp ...
- 趣谈Linux操作系统学习笔记:第二十六讲
一.内核页表 和用户态页表不同,在系统初始化的时候,我们就要创建内核页表了 我们从内核页表的根swapper_pg_dir开始找线索,在linux-5.1.3/arch/x86/include/asm ...
- .NET Core NuGet 多项目套餐打包的正确姿势
NuGet 默认只支持一个菜一个菜打包,不支持套餐打包.当对一个 csproj 项目进行 nuget 打包时(比如使用 dotnet pack 命令),只会将当前项目 build 出来的 dll 程序 ...