吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 474|回复: 16
上一主题 下一主题
收起左侧

[Python 原创] 自制一个可以批量下载彼岸图网壁纸的小工具,分享给大家

[复制链接]
跳转到指定楼层
楼主
lgk 发表于 2024-11-23 17:56 回帖奖励
这是一个可以批量下载壁纸的软件,借助于AI编程助手通过 Python 编写,能够获取到彼岸图网的每一页的壁纸,一次可以下载20张,不过需要手动进行翻页,没有进行自动翻页的功能,目前软件还不完善,由于时间原因目前只能够做到这里,不知道大佬们还有没有其他办法可以对其进行自动翻页?下载的过程是通过获取每一页的预览大图,并不是原图的壁纸,并没有去获取网站里面的原图,只不过是将手动另存为的重复过程用软件来进行循环了,省去了手动另存为的麻烦。建议将下载的时间间隔长一点,避免被检测到爬虫行为后禁止对网页进行访问,也同样也是减轻这个网站的负担。下载下来的壁纸将自动重命名为1~20。每次下载完之后需要更换另外一个文件夹,否则会覆盖当前文件夹的20个文件。不能够做到连续编写,不知道大佬们有没有什么办法可以提出改进。

彼岸图网是一个比较好的壁纸网站,有需要的可以去付费支持下载高清大图,貌似还可以打包下载,这里不是打广告只是告诉大家有这么一个可以下载壁纸的地方


以下是源码
[Python] 纯文本查看 复制代码
import requests
import os
import time
from bs4 import BeautifulSoup
import tkinter as tk
from tkinter import messagebox
from tkinter import filedialog
from tkinter import Toplevel  # 用于创建弹出窗口

# 1cm 约等于 37.795276 像素
CM_TO_PIXEL = 37.795276

def get_li_hrefs(url, save_folder, progress_window, progress_label):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
    }
    try:
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, 'html.parser')
            lis = soup.find_all('li')
            links = []
            for li in lis:
                link = li.find('a')
                if link:
                    href = link.get('href')
                    if href and '/tupian' in href:  # 筛选条件
                        full_url = 'https://pic.netbian.com' + href  # 拼接完整的 URL
                        links.append(full_url)
            image_count = 1  # 初始化图片计数
            for link in links:  # 依次请求筛选后的链接并处理返回内容
                try:
                    link_response = requests.get(link)
                    if link_response.status_code == 200:
                        link_soup = BeautifulSoup(link_response.text, 'html.parser')
                        photo_pic_divs = link_soup.find_all('div', class_='photo-pic')
                        for div in photo_pic_divs:
                            img_tags = div.find_all('img')
                            for img in img_tags:
                                src = img.get('src')
                                full_src = 'https://pic.netbian.com' + src  # 拼接完整的 URL
                                # 处理保存图片的文件夹,如果不存在则创建
                                if not os.path.exists(save_folder):
                                    os.makedirs(save_folder)
                                # 下载图片并按照自然数重命名保存到指定文件夹
                                try:
                                    time.sleep(1)  # 每次请求之间延时 1 秒
                                    image_response = requests.get(full_src)
                                    if image_response.status_code == 200:
                                        new_image_name = str(image_count) + '.jpg'  # 重命名为自然数.jpg
                                        save_path = os.path.join(save_folder, new_image_name)
                                        with open(save_path, 'wb') as f:
                                            f.write(image_response.content)
                                        progress_label.config(text=f"正在下载,已下载 {image_count} 张图片")  # 更新标签文本
                                        progress_window.update()  # 更新窗口显示
                                        print(f"图片重命名为 {new_image_name} 已保存到 {save_path}")
                                        image_count += 1  # 图片计数加 1
                                    else:
                                        print(f"请求图片 {full_src} 失败,状态码: {image_response.status_code}")
                                except requests.exceptions.RequestException as e:
                                    print(f"请求图片 {full_src} 出错: {e}")
                    else:
                        print(f"请求链接 {link} 失败,状态码: {link_response.status_code}")
                except requests.exceptions.RequestException as e:
                    print(f"请求链接 {link} 出错: {e}")
            # 下载完成后关闭进度窗口并弹出下载完成窗口
            progress_window.destroy()
            completed_window = Toplevel(root)
            completed_window.title("下载完成")
            completed_window.geometry(f"{int(9 * CM_TO_PIXEL)}x{int(6 * CM_TO_PIXEL)}")
            completed_label = tk.Label(completed_window, text="下载完成!", font=("Helvetica", 16), justify="center", fg="green")  # 设置字体为绿色
            completed_label.pack(expand=True)
            completed_window.mainloop()
        else:
            print(f"请求失败,状态码: {response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"请求出错: {e}")

def start_download():
    url = url_entry.get()
    if url:
        save_folder = folder_entry.get()  # 获取用户输入的保存文件夹
        if not save_folder:  # 如果未输入,使用默认文件夹
            save_folder = 'D:\\images'
        progress_window = Toplevel(root)
        progress_window.title("下载进度")
        progress_window.geometry(f"{int(9 * CM_TO_PIXEL)}x{int(6 * CM_TO_PIXEL)}")
        progress_label = tk.Label(progress_window, text="正在下载,已下载 0 张图片", font=("Helvetica", 16), justify="center")
        progress_label.pack(expand=True)
        get_li_hrefs(url, save_folder, progress_window, progress_label)
    else:
        messagebox.showerror("错误", "请输入有效的 URL")

# 创建主窗口
root = tk.Tk()
root.title("图片下载工具")

# 设置窗口大小(9cm x 6cm 转换为像素,假设 1cm = 37.795276px)
width_px = int(9 * CM_TO_PIXEL)
height_px = int(6 * CM_TO_PIXEL)
root.geometry(f"{width_px}x{height_px}")

# URL 输入框
url_label = tk.Label(root, text="输入 URL:")
url_label.pack()
url_entry = tk.Entry(root)
url_entry.pack()

# 保存文件夹输入框
folder_label = tk.Label(root, text="保存文件夹:")
folder_label.pack()
folder_entry = tk.Entry(root)
folder_entry.pack()

# 选择文件夹按钮
folder_button = tk.Button(root, text="选择文件夹", command=lambda: set_folder(folder_entry))
folder_button.pack()

# 下载按钮
download_button = tk.Button(root, text="开始下载", command=start_download)
download_button.pack()

def set_folder(entry_widget):
    folder_selected = filedialog.askdirectory()
    if folder_selected:
        entry_widget.delete(0, tk.END)
        entry_widget.insert(0, folder_selected)

root.mainloop()


软件地址永久有效:https://lgkl.lanzout.com/iwDxG2fzp97e
密码:fddp

下载完壁纸之后,可以通过 Photoshop这类图片处理工具或者一些 AI 工具,手动将壁纸变得更清晰。不知道有没有大佬知道能够通过这个 Python 编写一个程序,对接这个 AI 工具,让这个图片自动变得清晰,或者说是自动操作PS,类似于这样的程序

不足之处请各位大佬批评指正,共同进步!

免费评分

参与人数 3吾爱币 +2 热心值 +2 收起 理由
761609304 + 1 + 1 谢谢@Thanks!
微微一笑醉倾城 + 1 之前我开过会员,确实不错
yanglinman + 1 谢谢@Thanks!

查看全部评分

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

沙发
swsj666 发表于 2024-11-23 18:39
真不错,感谢分享
3#
Alanguth 发表于 2024-11-23 18:54
4#
MPFENG 发表于 2024-11-23 19:20
5#
leolcg 发表于 2024-11-23 19:40
感谢分享,试试看是不是好用
6#
renwei3608 发表于 2024-11-23 19:42
好东西!感谢分享
7#
popofeng 发表于 2024-11-23 19:43
谢谢分享,想换换壁纸了。
8#
openm4 发表于 2024-11-23 19:46
看不懂,感谢分享
9#
feiyang2024 发表于 2024-11-23 19:48
感谢分享,正是我需要的。
10#
JackLei 发表于 2024-11-23 20:15
下载不了原图
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 04:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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