吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4274|回复: 9
收起左侧

[Python 转载] 【可双击运行】Wallhaven 热门壁纸下载程序

[复制链接]
话痨司机啊 发表于 2022-7-6 10:25
本帖最后由 话痨司机啊 于 2022-7-8 09:16 编辑

Wallhaven  大名鼎鼎的壁纸下载网站,先说明一下出错看日志,如果是连接错误就是因为“墙”,请自行开代{过}{滤}理,本程序可以自动挂上你开的代{过}{滤}理端口。如果其他报错,请粘贴错误。


防止有人杠我,提前告知不是缩略图!!


【exe 双击运行 成品下载】:链接: https://pan.baidu.com/s/16BgiMLTdGJhl2HzxqyfeaQ?pwd=91eb 提取码: 91eb


效果图:
1.png

3.png

2.png

777.png

[Python] 纯文本查看 复制代码
"""
_description_ : wallhaven 热门壁纸下载,日志在文件夹内
_ author_ : 话痨司机(俄语发音)
"""
import requests
from lxml import etree
from pathlib import Path
from rich import print
from loguru import logger
from urllib.request import getproxies   

logger.add(Path(__file__).parent.joinpath('wallhaven_download.log'))

def get_local_proxy():
    """
    尝试获取代{过}{滤}理
    """
    global my_proxies
    try:
        my_proxies = getproxies()['http'] or getproxies()['https']
    except KeyError:
        my_proxies = None

def get_response(url):
    '''
    获取response
    '''
    try:
        res = requests.get(url,timeout=30,proxies=my_proxies)
        return res
    except Exception as e:
        logger.exception(e)
        
@logger.catch
def gets_the_primary_jpg(response):
    '''
    初步获取图片地址
    '''
    xpath_path = '//div[@id="thumbs"]/section[@class="thumb-listing-page"]/ul'
    et = etree.HTML(response.text)
    li = et.xpath(xpath_path)[0]
    pic_datas = []
    for l in li:
        if l is not None:
            pic_url = l.xpath('figure/img/@data-src')[0]
            span = l.xpath('figure/div/span/span/text()')
            if 'PNG' in span:
                pic_datas.append((pic_url,'png'))
            else:
                pic_datas.append((pic_url,'jpg'))
    return pic_datas

def address_translation(pic_data):
    """
    处理初步获取的地址
    """
    imgurl = pic_data[0].replace("//th.","//w.").replace("/small/","/full/")
    img_url_list = imgurl.split('/')
    img_url_list[-1] = 'wallhaven-' + img_url_list[-1]
    imgurl ='/'.join(img_url_list)
    if pic_data[1] == 'png':
        imgurl = imgurl.replace('.jpg','.png')
    file_name = imgurl.split('/')[-1]
    return imgurl,file_name    

def save_image(data):
    """
    保存图片
    """
    imgurl,file_name = data
    image_dir = Path(__file__).parent.joinpath('wallhaven')
    image_dir.mkdir(parents=True,exist_ok=True)
    if not image_dir.joinpath(file_name).exists():
        r = get_response(imgurl)
        with open(image_dir.joinpath(file_name),'wb') as f:
            f.write(r.content)
            logger.info(f'图片:{file_name}\n保存路径:{image_dir}\n状态:下载完成')
    else:
        logger.warning(f'图片{file_name}已经下载,不能重复下载!')
        
def main(start_page,end_page):
    '''
    逻辑主函数
    '''
    _url = lambda num: f"https://wallhaven.cc/hot?page={num}"
    urls = [_url(i) for i in range(start_page,end_page+1)]
    for u in urls:
        list(map(save_image,[data for data in map(address_translation,gets_the_primary_jpg(get_response(u)))]))
        
if __name__ == '__main__':
    get_local_proxy()
    start_page,end_page = int(input('请输入起始页面:')),int(input('请输入终止页面:'))
    if start_page >= 1 and end_page <= 56:
        main(start_page, end_page)
    else:
        print('[red]输入的页码超过限制,请重新输入,页码范围:1-56!')

免费评分

参与人数 6吾爱币 +10 热心值 +5 收起 理由
冬天冷了多穿点 + 1 我很赞同!
j简 + 1 + 1 我很赞同!
baiqianlover + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yanglinman + 1 谢谢@Thanks!
jtq1234 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jtq1234 发表于 2022-7-6 13:54
这个网站看多了要上瘾的。转兰州

下载:https://eva.lanzouj.com/ibTJt07g8ldg 密码:eva
13941700010 发表于 2022-7-13 16:35
dingdang1845 发表于 2022-7-6 13:56
alfriend 发表于 2022-7-6 15:27
很好啊,下载很多优质图片
YukinoshitaKa 发表于 2022-7-13 15:50
感谢分享
erikgqp8645 发表于 2023-1-17 10:37
非常感谢楼主的分享,这个好用。
ws525776625 发表于 2023-1-18 09:21
怎么找到这个网址图片的页数
cjk0719 发表于 2023-2-27 16:47
感谢分享,我去尝试一下
hhnlovejy1314 发表于 2023-3-9 14:54
cjk0719 发表于 2023-2-27 16:47
感谢分享,我去尝试一下

怎么用啊。。。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 00:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表