高清壁纸wallhaven.cc下载图片

该代码实现了一个简单的Python爬虫,用于从wallhaven.cc网站下载壁纸图片。为了避免被封IP,建议不使用多线程,并在每次下载图片后设置1秒的延迟。爬虫首先获取壁纸链接,然后提取图片URL并下载。代码中使用了requests库进行HTTP请求,正则表达式解析HTML,并通过os模块管理文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建议不要用多线程,设置延迟,不然会被封IP

import requests
import os
import re
import time
from concurrent.futures import ThreadPoolExecutor


class Get_img:
    def __init__(self):
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'
        }
        self.path = './wallpaper/'

    def get_img_from_url(self, number):
        try:
            global url
            real_url = url + str(number)
            print(real_url)
            response = requests.get(real_url, headers=self.headers, timeout=500)
            if response.status_code == 200:
                img_url = re.findall(r'data-wallpaper-id="(.*?)"', response.text)
                print(img_url)
                for i in img_url:
                    img_res = 'https://wallhaven.cc/w/' + i
                    response = requests.get(img_res, headers=self.headers, timeout=500)
                    if response.status_code == 200:
                        image_url = re.findall(r'id="wallpaper" src="(.*?)"', response.text)[0]
                        print(image_url)
                        img_response = requests.get(image_url, headers=self.headers, timeout=500)
                        img_name = image_url.split('/')[-1]
                        if not os.path.exists(self.path):
                            os.mkdir(self.path)
                        with open(self.path + img_name, 'wb') as f:
                            f.write(img_response.content)
                            print(img_name + '图片下载成功')
                            time.sleep(1)
                    else:
                        print('图片访问失败' + image_url)
            else:
                print('网页访问失败')
        except Exception as e:
            print(e)


if __name__ == '__main__':
    url = 'https://wallhaven.cc/hot?page='
    # get_img = Get_img()
    # executor = ThreadPoolExecutor(max_workers=5)
    # for i in executor.map(get_img.get_img_from_url, range(1, 10)):
    #     print(i)
    for i in range(11,60):
        Get_img().get_img_from_url(i)
        time.sleep(1)
        print('第{}下载完成'.format(i))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值