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进行mp3格式判断
Dec 23 Python
Python 字符串大小写转换的简单实例
Jan 21 Python
Python将图片转换为字符画的方法
Jun 16 Python
python中in在list和dict中查找效率的对比分析
May 04 Python
python3 拼接字符串的7种方法
Sep 12 Python
python学生信息管理系统(初级版)
Oct 17 Python
详解python执行shell脚本创建用户及相关操作
Apr 11 Python
Django REST framework 视图和路由详解
Jul 19 Python
pyCharm 实现关闭代码检查
Jun 09 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
sqlalchemy实现时间列自动更新教程
Sep 02 Python
python爬虫scrapy框架的梨视频案例解析
Feb 20 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
php+oracle 分页类
2006/10/09 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
javascript数据类型详解
2017/02/07 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
jQuery实现所有验证通过方可提交的表单验证
2017/11/21 jQuery
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
详解小程序中h5页面onShow实现及跨页面通信方案
2019/05/30 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Django框架下在视图中使用模版的方法
2015/07/16 Python
python中map()与zip()操作方法
2016/02/27 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
电子商务个人自荐信
2013/12/12 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
三国演义读书笔记
2015/06/25 职场文书
百年校庆感言
2015/08/01 职场文书
关于空气污染危害的感想
2015/08/11 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript