当前位置: 首页 > article >正文

Python网络爬虫获取Wallhaven壁纸图片(源码)

**

话不多说,直接附源码,可运行!

**

在这里插入图片描述

import requests
from lxml import etree
from fake_useragent import UserAgent
import time


class wallhaven(object):
    def __init__(self):
        # yellow
        # self.url = "https://wallhaven.cc/search?colors=cc6633&page={}"
        # girl
        self.url = "https://wallhaven.cc/search?q=girl&categories=111&purity=110&sorting=date_added&order=desc&ai_art_filter=0&page={}"
        ua = UserAgent()
        for i in range(1, 50):
            self.headers = {
                'User-Agent': ua.random,
            }

    def get_page(self, url):
        res = requests.get(url=url, headers=self.headers)
        html = res.content.decode("utf-8")
        return html

    def parse_page(self, html):
        parse_html = etree.HTML(html)
        image_src_list = parse_html.xpath('//figure//a/@href')
        print("当前图片Url列表:", image_src_list)

        for image_src in image_src_list:
            html1 = self.get_page(image_src)  # 二级页面发生请求
            parse_html1 = etree.HTML(html1)
            filename = parse_html1.xpath('//div[@class="scrollbox"]//img/@src')
            if filename is None:
                continue
            for img in filename:
                dirname = "./images/other/" + img[32:]
                html2 = requests.get(url=img, headers=self.headers).content
                with open(dirname, 'wb') as f:
                    f.write(html2)
                    print(f"图片{filename}下载成功:")

    def main(self):
        startPage = 12
        endPage = 99
        for page in range(startPage, endPage + 1):
            print("获取当前页面图片,页码:", page)
            url = self.url.format(page)
            html = self.get_page(url)
            self.parse_page(html)
            time.sleep(1.4)


if __name__ == '__main__':
    imageSpider = wallhaven()
    imageSpider.main()


http://www.kler.cn/news/326090.html

相关文章:

  • 成都网安周暨CCS2024 | 大模型安全与产业应用创新研讨活动成功举办
  • 什么是javascript的事件循环
  • 如何使用ssm实现基于BS的库存管理软件设计与实现+vue
  • 河南移动:核心营业系统稳定运行超300天,数据库分布式升级实践|OceanBase案例
  • SpringCloud 2023 LoadBalancer介绍、使用、获取服务列表原理、负载均衡算法
  • 【2024保研经验帖】中科院信工所夏令营经验分享
  • 【Git原理与使用】Git初识基本操作
  • 企业微信 标准年级对照表
  • Spring MVC系统学习(三)——数据绑定和响应
  • Lombok 在 IntelliJ IDEA 中的使用步骤
  • 可注射、自修复水凝胶胶粘剂:无缝合伤口闭合的新突破
  • 3. go 运算符
  • WSL2Linux 子系统(十一)
  • 简易CPU设计入门:取指令(三),ip_buf与rd_en的非阻塞赋值
  • chatgpt的ai导师风格设置
  • [ RK3566-Android11 ] 关于移植 RK628F 驱动以及后HDMI-IN图像延迟/无声等问题
  • Tesla T4 P2P测试
  • Vue 实现原生表格 tr td 动态合并 vue前端原生表格动态合并列 合并行
  • win10专业版永久关闭自动更新功能
  • Linux中配置docker环境
  • 基于Arduino的自弹尤克里里机器人
  • Apache DolphinScheduler-1.3.9源码分析(一)
  • Gromacs位置限制问题
  • 强化学习在自动驾驶技术中的应用与挑战
  • Spring 的作用和优势
  • [Linux#60][HTTPS] 加密 | 数字指纹 | 详解HTTPS工作方案 | CA认证
  • DOM中的节点分为哪几种几类型
  • 服务器几核几G几M是什么意思?如何选择?
  • 减少重复的请求之promise缓存池(构造器版) —— 缓存promise,多次promise等待并返回第一个promise的结果
  • 热门解压短视频素材下载网站推荐