使用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 ...
随机推荐
- Access denied for user 'root@localhost' (using password:NO)问题的解决
错误详情: 使用pymysql连接数据库mysql,一直无法连接上, conn = pymysql.connect(host='localhost', port=3306, user='root', ...
- DataPump遭遇ORA-06512&ORA-39080&ORA-01403错误案例
最近使用数据泵(DataPump)比较多,遇到了奇奇怪怪的问题,似乎Apply了补丁PSU 10.2.0.5.180717后,DataPump的问题就格外多.如下所示: expdp system/xx ...
- fuse3 编译相关简要记录 与 fuse3 系统调优;
下面是在使用fuse3 编译bbfs 过程中一些参数,用于备忘: FUSE_CFLAGS="-I/usr/local/include/fuse3" FUSE_LIBS=" ...
- Horovod 分布式深度学习框架相关
最近需要 Horovod 相关的知识,在这里记录一下,进行备忘: 分布式训练,分为数据并行和模型并行两种: 模型并行:分布式系统中的不同GPU负责网络模型的不同部分.神经网络模型的不同网络层被分配到不 ...
- RPM命令总结
RPM软件管理程序 rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他 ...
- MYSQL的备份与恢复--物理备份xrabackup
目录 1.数据库完整备份与恢复 (1)环境准备 (2)完全备份恢复流程 2.数据库增量备份与恢复 (1)增量和差异概述 (2)增量备份和恢复 3.数据库差异备份与恢复 4.简单命令进行物理备份 5.实 ...
- linux编程stat检测文件元数据信息
#include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/sta ...
- Eclipse maven创建web项目报错Could not resolve archetype
1.下载http://repo1.maven.org/maven2/archetype-catalog.xml 通过eclipse下载和网页下载我这里都比较慢,最后用的迅雷下载 2.将本地xml文件配 ...
- 美团技术分享:深度解密美团的分布式ID生成算法
本文来自美团技术团队“照东”的分享,原题<Leaf——美团点评分布式ID生成系统>,收录时有勘误.修订并重新排版,感谢原作者的分享. 1.引言 鉴于IM系统中聊天消息ID生成算法和生成策略 ...
- ElementTree类
elementtree主要是一个包含根节点的树的文档包装器 它提供了序列化和一般文档处理的两种方法 from lxml import etree str = '''<?xml version=& ...