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的判断语句模拟三目运算
Apr 24 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
Python温度转换实例分析
Jan 17 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
Django框架实现逆向解析url的方法
Jul 04 Python
python使用rpc框架gRPC的方法
Aug 24 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
python属于解释型语言么
Jun 15 Python
如何用Python提取10000份log中的产品信息
Jan 14 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
优化使用mysql存储session的php代码
2008/01/10 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
2013/06/19 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
Angular工具方法学习
2016/12/26 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
django主动抛出403异常的方法详解
2019/01/04 Python
nohup后台启动Python脚本,log不刷新的解决方法
2019/01/14 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
校园门卫岗位职责
2013/12/09 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
领导干部考察材料
2014/02/08 职场文书
卫生厅领导班子党的群众路线教育实践活动整改措施
2014/09/20 职场文书
教师批评与自我批评(群众路线)
2014/10/15 职场文书
2015新学期家长寄语
2015/02/26 职场文书
实习单位意见
2015/06/04 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书