python爬虫 爬取超清壁纸代码实例


Posted in Python onAugust 16, 2019

简介

壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物。然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁纸要么分辨率低,要么带有水印。

壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物。然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁纸要么分辨率低,要么带有水印。

演示图片

python爬虫 爬取超清壁纸代码实例

python爬虫 爬取超清壁纸代码实例

完整源代码

'''
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,934109170
群里有不错的学习教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。
'''
# -*- coding:utf-8 -*- 
from requests import get
from filetype import guess
from os import rename
from os import makedirs
from os.path import exists
from json import loads
from contextlib import closing 
# 文件下载器
def Down_load(file_url, file_full_name, now_photo_count, all_photo_count):
  headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"} 
  # 开始下载图片
  with closing(get(file_url, headers=headers, stream=True)) as response:
    chunk_size = 1024 # 单次请求最大值
    content_size = int(response.headers['content-length']) # 文件总大小
    data_count = 0 # 当前已传输的大小
    with open(file_full_name, "wb") as file:
      for data in response.iter_content(chunk_size=chunk_size):
        file.write(data)
        done_block = int((data_count / content_size) * 50)
        data_count = data_count + len(data)
        now_jd = (data_count / content_size) * 100
        print("\r %s:[%s%s] %d%% %d/%d" % (file_full_name, done_block * '?', ' ' * (50 - 1 - done_block), now_jd, now_photo_count, all_photo_count), end=" ")
  # 下载完图片后获取图片扩展名,并为其增加扩展名
  file_type = guess(file_full_name)
  rename(file_full_name, file_full_name + '.' + file_type.extension)  
# 爬取不同类型图片
def crawler_photo(type_id, photo_count): 
  # 最新 1, 最热 2, 女生 3, 星空 4
  if(type_id == 1):
    url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c68ffb9463b7fbfe72b0db0?page=1&per_page=' + str(photo_count)
  elif(type_id == 2):
    url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c69251c9b1c011c41bb97be?page=1&per_page=' + str(photo_count)
  elif(type_id == 3):
    url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c81087e6aee28c541eefc26?page=1&per_page=' + str(photo_count)
  elif(type_id == 4):
    url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c81f64c96fad8fe211f5367?page=1&per_page=' + str(photo_count) 
  # 获取图片列表数据
  headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
  respond = get(url, headers=headers)
  photo_data = loads(respond.content)
  # 已经下载的图片张数
  now_photo_count = 1 
  # 所有图片张数
  all_photo_count = len(photo_data)
  # 开始下载并保存5K分辨率壁纸
  for photo in photo_data:
    # 创建一个文件夹存放我们下载的图片
    if not exists('./' + str(type_id)):
      makedirs('./' + str(type_id))
    # 准备下载的图片链接
    file_url = photo['urls']['raw'] 
    # 准备下载的图片名称,不包含扩展名
    file_name_only = file_url.split('/')
    file_name_only = file_name_only[len(file_name_only) -1] 
    # 准备保存到本地的完整路径
    file_full_name = './' + str(type_id) + '/' + file_name_only 
    # 开始下载图片
    Down_load(file_url, file_full_name, now_photo_count, all_photo_count)
    now_photo_count = now_photo_count + 1  
if __name__ == '__main__': 
  # 最新 1, 最热 2, 女生 3, 星空 4
  # 爬取类型为3的图片(女生),一共准备爬取20000张
  wall_paper_id = 1
  wall_paper_count = 10
  while(True):
    # 换行符
    print('\n\n') 
    # 选择壁纸类型
    wall_paper_id = input("壁纸类型:最新壁纸 1, 最热壁纸 2, 女生壁纸 3, 星空壁纸 4\n请输入编号以便选择5K超清壁纸类型:")
    # 判断输入是否正确
    while(wall_paper_id != str(1) and wall_paper_id != str(2) and wall_paper_id != str(3) and wall_paper_id != str(4)):
      wall_paper_id = input("壁纸类型:最新壁纸 1, 最热壁纸 2, 女生壁纸 3, 星空壁纸 4\n请输入编号以便选择5K超清壁纸类型:")
    # 选择要下载的壁纸数量
    wall_paper_count = input("请输入要下载的5K超清壁纸的数量:")
    # 判断输入是否正确
    while(int(wall_paper_count) <= 0):
      wall_paper_count = input("请输入要下载的5K超清壁纸的数量:") 
    # 开始爬取5K高清壁纸
    print("正在下载5K超清壁纸,请稍等……")
    crawler_photo(int(wall_paper_id), int(wall_paper_count))
    print('\n下载5K高清壁纸成功!')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python删除java文件头上版权信息的方法
Jul 31 Python
Python 字典dict使用介绍
Nov 30 Python
Linux下使用python自动修改本机网关代码分享
May 21 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
TensorFlow tf.nn.max_pool实现池化操作方式
Jan 04 Python
Python守护进程实现过程详解
Feb 10 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
Python 如何实现数据库表结构同步
Sep 29 Python
Python类的继承super相关原理解析
Oct 22 Python
pandas实现导出数据的四种方式
Dec 13 Python
Python PO设计模式的具体使用
Aug 16 #Python
python使用sessions模拟登录淘宝的方式
Aug 16 #Python
Django错误:TypeError at / 'bool' object is not callable解决
Aug 16 #Python
Python facenet进行人脸识别测试过程解析
Aug 16 #Python
Python Web框架之Django框架Model基础详解
Aug 16 #Python
pycharm配置git(图文教程)
Aug 16 #Python
Django如何实现上传图片功能
Aug 16 #Python
You might like
E路文章系统PHP
2006/12/11 PHP
php preg_match的匹配不同国家语言实例
2016/12/29 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
用jscript实现新建word文档
2007/06/15 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
JavaScript继承模式粗探
2016/01/12 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
React+TypeScript+webpack4多入口配置详解
2019/08/08 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
python Tkinter的图片刷新实例
2019/06/14 Python
Python 转换文本编码实现解析
2019/08/27 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
《放飞蜻蜓》教学反思
2014/04/27 职场文书
班级口号大全
2014/06/09 职场文书
质量整改报告范文
2014/11/08 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
导游词之淮安明祖陵
2019/11/25 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技