python爬虫学习之爬取超清唯美壁纸
2019-08-13 08:34:34来源:博客园 阅读 ()
简介
壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物。然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁纸要么分辨率低,要么带有水印。
壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物。然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁纸要么分辨率低,要么带有水印。
演示图片
完整源代码
1 ''' 2 在学习过程中有什么不懂得可以加我的 3 python学习交流扣扣qun,934109170 4 群里有不错的学习教程、开发工具与电子书籍。 5 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。 6 ''' 7 # -*- coding:utf-8 -*- 8 9 from requests import get 10 from filetype import guess 11 from os import rename 12 from os import makedirs 13 from os.path import exists 14 from json import loads 15 from contextlib import closing 16 17 18 # 文件下载器 19 def Down_load(file_url, file_full_name, now_photo_count, all_photo_count): 20 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"} 21 22 # 开始下载图片 23 with closing(get(file_url, headers=headers, stream=True)) as response: 24 chunk_size = 1024 # 单次请求最大值 25 content_size = int(response.headers['content-length']) # 文件总大小 26 data_count = 0 # 当前已传输的大小 27 with open(file_full_name, "wb") as file: 28 for data in response.iter_content(chunk_size=chunk_size): 29 file.write(data) 30 done_block = int((data_count / content_size) * 50) 31 data_count = data_count + len(data) 32 now_jd = (data_count / content_size) * 100 33 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=" ") 34 35 # 下载完图片后获取图片扩展名,并为其增加扩展名 36 file_type = guess(file_full_name) 37 rename(file_full_name, file_full_name + '.' + file_type.extension) 38 39 40 41 # 爬取不同类型图片 42 def crawler_photo(type_id, photo_count): 43 44 # 最新 1, 最热 2, 女生 3, 星空 4 45 if(type_id == 1): 46 url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c68ffb9463b7fbfe72b0db0?page=1&per_page=' + str(photo_count) 47 elif(type_id == 2): 48 url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c69251c9b1c011c41bb97be?page=1&per_page=' + str(photo_count) 49 elif(type_id == 3): 50 url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c81087e6aee28c541eefc26?page=1&per_page=' + str(photo_count) 51 elif(type_id == 4): 52 url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c81f64c96fad8fe211f5367?page=1&per_page=' + str(photo_count) 53 54 # 获取图片列表数据 55 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"} 56 respond = get(url, headers=headers) 57 photo_data = loads(respond.content) 58 59 # 已经下载的图片张数 60 now_photo_count = 1 61 62 # 所有图片张数 63 all_photo_count = len(photo_data) 64 65 # 开始下载并保存5K分辨率壁纸 66 for photo in photo_data: 67 68 # 创建一个文件夹存放我们下载的图片 69 if not exists('./' + str(type_id)): 70 makedirs('./' + str(type_id)) 71 72 # 准备下载的图片链接 73 file_url = photo['urls']['raw'] 74 75 # 准备下载的图片名称,不包含扩展名 76 file_name_only = file_url.split('/') 77 file_name_only = file_name_only[len(file_name_only) -1] 78 79 # 准备保存到本地的完整路径 80 file_full_name = './' + str(type_id) + '/' + file_name_only 81 82 # 开始下载图片 83 Down_load(file_url, file_full_name, now_photo_count, all_photo_count) 84 now_photo_count = now_photo_count + 1 85 86 87 88 if __name__ == '__main__': 89 90 # 最新 1, 最热 2, 女生 3, 星空 4 91 # 爬取类型为3的图片(女生),一共准备爬取20000张 92 wall_paper_id = 1 93 wall_paper_count = 10 94 while(True): 95 96 # 换行符 97 print('\n\n') 98 99 # 选择壁纸类型 100 wall_paper_id = input("壁纸类型:最新壁纸 1, 最热壁纸 2, 女生壁纸 3, 星空壁纸 4\n请输入编号以便选择5K超清壁纸类型:") 101 # 判断输入是否正确 102 while(wall_paper_id != str(1) and wall_paper_id != str(2) and wall_paper_id != str(3) and wall_paper_id != str(4)): 103 wall_paper_id = input("壁纸类型:最新壁纸 1, 最热壁纸 2, 女生壁纸 3, 星空壁纸 4\n请输入编号以便选择5K超清壁纸类型:") 104 105 106 # 选择要下载的壁纸数量 107 wall_paper_count = input("请输入要下载的5K超清壁纸的数量:") 108 # 判断输入是否正确 109 while(int(wall_paper_count) <= 0): 110 wall_paper_count = input("请输入要下载的5K超清壁纸的数量:") 111 112 113 # 开始爬取5K高清壁纸 114 print("正在下载5K超清壁纸,请稍等……") 115 crawler_photo(int(wall_paper_id), int(wall_paper_count)) 116 print('\n下载5K高清壁纸成功!')
原文链接:https://www.cnblogs.com/xiaoyiq/p/11337829.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash