python专用壁纸_Python爬Mac专用壁纸

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

很多人都知道,网络上有很多的壁纸,但是大部分都是1980*1080的分辨率,可是这专为Mac系统做的壁纸确实5000+*3000+的分辨率,你可以想象一下两种壁纸的差距,代码如下

# 获取一个网址 pip install requests

from requests import get

# 判断文件类型的第三方包 pip install filetype

from filetype import guess

# 命名文件或者目录

from os import rename

# 创建目录的包

from os import makedirs

# 判断文件是否存在

from os.path import exists

# 将已经编码的json字符串解码为python对象

from json import loads

# 上下文管理器操作模块 当我们请求api的时候,如果程序运行完成了,就关闭链接

from contextlib import closing

'''

1.获取图片资源

2.下载图片资源

'''

# 文件下载器 参数:1.资源链接 2.保存路径 3.当前下载数量 4.图片总数

def down_load(file_url, file_path, now_wallpaper_count, all_wallpaper_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

# 文件操作

if response.status_code == 200:

with open(file_path, '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_percentage = (data_count / content_size) * 100

print("\r %s: [%s%s] %d%% %d/%d" % (file_path, done_block * '*', ' ' * (50 - 1 - done_block), now_percentage, now_wallpaper_count, all_wallpaper_count), end=' ')

# 下载完图片后获取图片拓展名

file_pype = guess(file_path)

try:

rename(file_path, file_path + '.' + file_pype.extension)

except FileExistsError:

print('该资源已经存在...')

rename(file_path, file_path + '副本' + '.' + file_pype.extension)

# 获取图片资源

def spider_wallpaper(type_id, wallpaper_count):

url = ''

if(type_id == 1):

url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c68ffb9463b7fbfe72b0db0?page=1&per_page=' + str(wallpaper_count)

elif(type_id == 2):

url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c69251c9b1c011c41bb97be?page=1&per_page=' + str(wallpaper_count)

elif(type_id == 3):

url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c81087e6aee28c541eefc26?page=1&per_page=' + str(wallpaper_count)

elif(type_id == 4):

url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c81f64c96fad8fe211f5367?page=1&per_page=' + str(wallpaper_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"

}

response = get(url, headers=headers)

# 把json数据转成python对象

wallpaper_data = loads(response.content)

# 已经下载的图片张数 初始值

now_wallpaper_count = 1

# 所有的图片张数

all_wallpaper_count = len(wallpaper_data)

# 开始下载并保存5k分辨率壁纸

make_dir = ''

for wallpaper in wallpaper_data:

# 创建一个文件夹来存放我们下载的图片

if type_id == 1:

if not exists('./' + '最新壁纸'):

makedirs('./' + '最新壁纸')

make_dir = '最新壁纸'

elif type_id == 2:

if not exists('./' + '最热壁纸'):

makedirs('./' + '最热壁纸')

make_dir = '最热壁纸'

elif type_id == 3:

if not exists('./' + '女生壁纸'):

makedirs('./' + '女生壁纸')

make_dir = '女生壁纸'

elif type_id == 4:

if not exists('./' + '星空壁纸'):

makedirs('./' + '星空壁纸')

make_dir = '星空壁纸'

# print(wallpaper)

# 准备下载的图片链接

file_url = wallpaper['urls']['raw']

# 准备下载的图片链接

file_name_only = file_url.split('/')

# 以最后一个url参数作为壁纸名称

file_name_only = file_name_only[len(file_name_only) - 1]

# 拼接下载路径

file_path = './' + make_dir + '/' + file_name_only

# 下载图片

down_load(file_url, file_path, now_wallpaper_count, all_wallpaper_count)

print('\t' + file_name_only)

now_wallpaper_count += 1

if __name__== "__main__":

while(True):

print('\n\n')

# 选择壁纸类型

wall_paper_id = input('请输入壁纸类型(数字) [1.最新壁纸 2.最热壁纸 3.女生壁纸 4.星空壁纸]:')

# 判断输入是否正确

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.星空壁纸]:')

# 选择要下载的壁纸数量

wall_paper_count = input('请输入要下载的5K超清壁纸的数量: ')

# 判断输入是否正确

while(int(wall_paper_count) <= 0):

wall_paper_count = input('请重新输入要下载的5K超清壁纸的数量:')

# 开始爬取5k超清壁纸

print('正在下载5k超清壁纸...')

spider_wallpaper(int(wall_paper_id), int(wall_paper_count))

print('\n下载5k超清壁纸成功...')

break

下图是怎样在浏览器上获取"User-Agent":,你必须要打开你要爬取东西的页面上才行,这只是一个实例,并不是我要爬取的页面

8becb97571c9009b942d5f29529490d5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值