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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
在Python中使用判断语句和循环的教程
Apr 25 Python
python一键升级所有pip package的方法
Jan 16 Python
Python 闭包的使用方法
Sep 07 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
pytorch 状态字典:state_dict使用详解
Jan 17 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
浅谈Python中re.match()和re.search()的使用及区别
Apr 14 Python
Python不支持 i ++ 语法的原因解析
Jul 22 Python
深入分析python 排序
Aug 24 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
解析python中的jsonpath 提取器
Jan 18 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
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
node.js实现快速截图
2016/08/27 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
详解操作虚拟dom模拟react视图渲染
2018/07/25 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
JavaScript进阶(四)原型与原型链用法实例分析
2020/05/09 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
python里将list中元素依次向前移动一位
2014/09/12 Python
Python运用于数据分析的简单教程
2015/03/27 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
python中time库的实例使用方法
2019/10/31 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
会计自荐书
2013/12/02 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
个人专业技术总结
2015/03/05 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
js实现模拟购物商城案例
2021/05/18 Javascript
浅谈Python数学建模之线性规划
2021/06/23 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python