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

查看 51|回复 9
作者:lgk   
这是一个可以批量下载壁纸的软件,借助于AI编程助手通过 Python 编写,能够获取到彼岸图网的每一页的壁纸,一次可以下载20张,不过需要手动进行翻页,没有进行自动翻页的功能,目前软件还不完善,由于时间原因目前只能够做到这里,不知道大佬们还有没有其他办法可以对其进行自动翻页?下载的过程是通过获取每一页的预览大图,并不是原图的壁纸,并没有去获取网站里面的原图,只不过是将手动另存为的重复过程用软件来进行循环了,省去了手动另存为的麻烦。建议将下载的时间间隔长一点,避免被检测到爬虫行为后禁止对网页进行访问,也同样也是减轻这个网站的负担。下载下来的壁纸将自动重命名为1~20。每次下载完之后需要更换另外一个文件夹,否则会覆盖当前文件夹的20个文件。不能够做到连续编写,不知道大佬们有没有什么办法可以提出改进。
彼岸图网是一个比较好的壁纸网站,有需要的可以去付费支持下载高清大图,貌似还可以打包下载,
[color=]这里不是打广告
只是告诉大家有这么一个可以下载壁纸的地方
以下是源码
[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,类似于这样的程序
不足之处请各位大佬批评指正,共同进步!

文件夹, 壁纸

swsj666   

真不错,感谢分享
Alanguth   

感谢分享好工具
MPFENG   

请求失败403
leolcg   

感谢分享,试试看是不是好用
renwei3608   

好东西!感谢分享
popofeng   

谢谢分享,想换换壁纸了。
openm4   

看不懂,感谢分享
feiyang2024   

感谢分享,正是我需要的。
JackLei   

下载不了原图
您需要登录后才可以回帖 登录 | 立即注册

返回顶部