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转换HTML到Text纯文本的方法
Jan 15 Python
Python入门_条件控制(详解)
May 16 Python
django 创建过滤器的实例详解
Aug 14 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
PyCharm安装Markdown插件的两种方法
Jun 24 Python
Python实现最大子序和的方法示例
Jul 05 Python
django框架模板语言使用方法详解
Jul 18 Python
python线程信号量semaphore使用解析
Nov 30 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
Python进程间的通信之语法学习
Apr 11 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
使用PHPMailer发送邮件实例
2017/02/15 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
JQuery伸缩导航练习示例
2013/11/13 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
Javascript实现图片加载从模糊到清晰显示的方法
2016/06/21 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
Bootstrap源码解读导航(6)
2016/12/23 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
详解如何理解vue的key属性
2019/04/14 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python迭代dict的key和value的方法
2018/07/06 Python
django中使用POST方法获取POST数据
2019/08/20 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
python模块内置属性概念及实例
2021/02/18 Python
ECHT官方网站:男女健身服
2020/02/14 全球购物
Sql面试题
2013/03/20 面试题
新郎新娘婚礼答谢词
2014/01/11 职场文书
超市总经理岗位职责
2014/02/02 职场文书
领班岗位职责范文
2014/02/06 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
优秀党务工作者事迹材料
2014/05/07 职场文书
护理学专业求职信
2014/06/29 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS