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获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 Python
Python实现子类调用父类的方法
Nov 10 Python
Python中一些自然语言工具的使用的入门教程
Apr 13 Python
自己使用总结Python程序代码片段
Jun 02 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
Python实现的寻找前5个默尼森数算法示例
Mar 25 Python
matplotlib subplots 设置总图的标题方法
May 25 Python
有关Python的22个编程技巧
Aug 29 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
Python实现代码块儿折叠
Apr 15 Python
next在python中返回迭代器的实例方法
Dec 15 Python
用python制作个音乐下载器
Jan 30 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 使用GD库为页面增加水印示例代码
2014/03/24 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
python处理二进制数据的方法
2015/06/03 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
用Python解数独的方法示例
2019/10/24 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
Python grpc超时机制代码示例
2020/09/14 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
细说CSS3中的选择符
2008/10/17 HTML / CSS
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
10条PHP编程习惯
2014/05/26 面试题
C语言变量的命名规则都有哪些
2013/12/27 面试题
课程改革实施方案
2014/03/16 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
python运算符之与用户交互
2022/04/13 Python