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. sync.Map与Concurrent Map

    1. sync.Map 1.1. map并发不安全 go1.6以后map有了并发的安全检查,所以如果在并发环境中读写map就会报错 func unsafeMap() { // 创建一个map对象 m ...

  2. angularjs $http请求网络数据并展示

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. c程序内存检测工具 - Valgrind

    常用C程序内存泄露检测工具 https://blog.csdn.net/u012662731/article/details/78652651

  4. andorid popupwindow 更新时动画的实现,可实现一个窗口被一个窗口推上去的效果

    最近由于项目需要,一直在寻找一个弹出窗口,在另一个弹出窗口弹出时,推上去的效果,居然找不到,经过不懈的努力,终于实现了popupwindow在更新时的动画. 先上代码: import android. ...

  5. LG5202 「USACO2019JAN」Redistricting 动态规划+堆/单调队列优化

    问题描述 LG5202 题解 \[opt[i]=xx+(cnt[i]-cnt[yy]<=0)\] 发现\(cnt[i]-cnt[yy] <= 0\)只能有两种取值 于是直接堆优化即可 \( ...

  6. C语言中,嵌套的if语句的一些经验...

    double f(double x){double result;if(x<0)result=-x+sin(x);else if(x==0)result=0;     else if(10> ...

  7. 一篇文章弄懂flex布局

     壹 ❀ 引 谈到flex布局,我不知道有多少人跟我一样,在本能的想到justify-content:center与align-items:center两条属性之后,除此之外的其它属性居然显得格外陌生 ...

  8. WEB引入Google思源黑体

    通过Link标签在网页头部引用Google Web Font: 1 <link rel="stylesheet" href="https://fonts.googl ...

  9. 【MySQL】MySQL 8.0的SYS视图

    MySQL的SYS视图 MySQL8.0的发展越来越趋同与Oracle,为了更好的监控MySQL的一些相关指标,出现了SYS视图,用于监控. 1.MySQL版本 (root@localhost) [s ...

  10. Java生鲜电商平台-电商支付流程架构实战

    Java生鲜电商平台-电商支付流程架构实战 说明:我一直秉承的就是接地气的业务架构实战.我的文章都有一个这样的核心. 1. 业务场景 2. 解决问题. 3.代码实现. 4.代码重构. 5.总结与复盘. ...