下载wallheaven壁纸(加入搜索功能)

在上一个版本的基础上加入了搜索功能,并且可以自定义下载张数

import requests
import re
import os
import time
import random
import cv2

def main():
        search_content = input('请输入您需要搜索的壁纸主题(只能输入英文):')
        print('--------------------------------------------------------------')
        search_quantity = int(input('请输入您想下载的壁纸数量,输入1下载24张,输入2下载48张,输入3下载72张:'))
        print('--------------------------------------------------------------')
        urls = get_urls(search_content, search_quantity)
        WallLink = get_WallLink(urls)
        print(f'即将下载{len(WallLink)}张关于‘’{search_content}‘’的壁纸')
        get_WallPaper(WallLink, search_content)


'''解析网页'''
def get_urls(search_content,n):
    headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41'}
    page=random.randint(0,10)
    All_urls=[]
    for i in range(n):
        url=f'https://wallhaven.cc/search?q={search_content}&categories=110&purity=100&sorting=relevance&order=desc&page={page}'
        response=requests.get(url,headers=headers)
        html=response.text
        urls = re.findall('<img alt=".*?" class=".*?" data-src="(.*?)" src="" >', html)
        All_urls.extend(urls)
    # print(f'一共{len(All_urls)}张')
    return  All_urls


'''解析图片'''
def get_WallLink(All_urls):
    Link=[]
    for url in All_urls:
        if url.find('lg/') !=-1:
            str=url.split('lg/')[-1]
        elif url.find('lg/') ==-1:
            str=url.split('small/')[-1]
        str1 = str[3:]
        str2 = str[0:3]
        # print(str1)
        # print(str2)
        baseurl = 'https://w.wallhaven.cc/full/' + str2 + 'wallhaven-' + str1
        Link.append(baseurl)
    if len(Link)!=0:
        return Link
    else:
        return print('不好意思,没有搜索到内容')


'''保存图片'''
def get_WallPaper(Link,search_content):
    headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41'}
    # 建立文件夹
    dir_name= f'../{search_content}'
    flag=0

    print('---------------------------------------------------')
    if not os.path.exists(dir_name):
        os.mkdir(dir_name)
    print(f'壁纸将保存在路径为”{os.path.abspath(dir_name)}“的文件夹中')
    print('即将开始下载,请您耐心等待...')
    for url in Link:
        flag=flag+1
        filename=url.split('/')[-1]
        response=requests.get(url,headers=headers)
        with open(dir_name+'/'+filename,'wb')as f:
            f.write(response.content)
            print(f'壁纸{flag}已经下载好...')
            print('-----------------')
    print('-------------------------壁纸下载完成-------------------------')
    print(f'请打开路径”{os.path.abspath(dir_name)}“查看下载好的壁纸')
    print('------------------------------------------------------------')


while True:
    print('********************  壁纸下载神器  ********************')
    print('--------------------|输入1 按Enter键确认:搜索壁纸 |--------------------')
    print('--------------------|输入2 按Enter键确认:退出程序 |--------------------')
    choice=int(input())
    if choice==1:
        main()
    elif choice==2:
        break
    else:print('输入错误,请重新输入')
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值