lgk 发表于 2024-11-23 17:56

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

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

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


以下是源码
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,类似于这样的程序

不足之处请各位大佬批评指正,共同进步!{:1_893:}

swsj666 发表于 2024-11-23 18:39

真不错,感谢分享

Alanguth 发表于 2024-11-23 18:54

感谢分享好工具

MPFENG 发表于 2024-11-23 19:20

请求失败403

leolcg 发表于 2024-11-23 19:40

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

renwei3608 发表于 2024-11-23 19:42

好东西!感谢分享

popofeng 发表于 2024-11-23 19:43

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

openm4 发表于 2024-11-23 19:46

看不懂,感谢分享

feiyang2024 发表于 2024-11-23 19:48

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

JackLei 发表于 2024-11-23 20:15

下载不了原图
页: [1] 2
查看完整版本: 自制一个可以批量下载彼岸图网壁纸的小工具,分享给大家