在线浏览“秀人网合集”的新思路:30 行 Python 把封面图链接秒变本地可点图库

在线浏览“秀人网合集”的新思路:30 行 Python 把封面图链接秒变本地可点图库

用 30 行 Python 把秀人网公开合集“搬”进本地数据库

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

“秀人网”近日上线的新主题合集页采用前端渲染,数据通过 /api/v2/theme/list 接口一次性返回 JSON,无需模拟点击“加载更多”。接口无登录限制,但带 5 秒滑动窗口的 IP 频次校验:单 IP >30 次/分即返回 429。本文示范如何遵守 robots 协议、放缓速率,仅采集“公开可见”字段,并给出断点续抓、User-Agent 随机化、异常重试等常用技巧。
核心思路三步走:
分析列表接口:在浏览器 DevTools 里筛选 XHR,发现真实请求 URL 形如
https://www.xiuren.net/api/v2/theme/list?page={page}&size=20,返回体含 data.total 与 data.list。
解析单条记录:字段 title、author、coverUrl 即为我们需要的元数据,无需再进详情页。
限速+重试:用 tenacity 的 @retry(stop=stop_after_attempt(3)) 装饰器,遇到 429 自动退避 10 秒;全局速率 time.sleep(random.uniform(1, 2)),确保平均 <30 次/分。
运行环境:Python≥3.7,依赖如下
pip install requests pandas tenacity fake-useragent
代码(文件 save_xiuren_meta.py):

#!/usr/bin/env python3# -*- coding: utf-8 -*-""" 抓取秀人网公开主题合集元信息,仅采集 title/author/coverUrl 三字段。 仅供学习,请遵守平台 robots.txt 与相关法律法规。 """import csv, time, random, requests from tenacity import retry, stop_after_attempt, wait_fixed from fake_useragent import UserAgent BASE_URL ="https://www.xiuren.net/api/v2/theme/list" CSV_FILE ="xiuren_meta.csv" PAGE_SIZE =20 MAX_PAGE =50# 按需调整,0 表示抓全量 SLEEP_RANGE =(1,2)# 秒,随机休眠 ua = UserAgent() session = requests.Session() session.headers.update({"Referer":"https://www.xiuren.net/"})@retry(stop=stop_after_attempt(3), wait=wait_fixed(10))deffetch_one_page(page:int): session.headers.update({"User-Agent": ua.random}) params ={"page": page,"size": PAGE_SIZE} resp = session.get(BASE_URL, params=params, timeout=10)if resp.status_code ==429:raise Exception("Rate limited") resp.raise_for_status()return resp.json()defmain(): writer =Nonefor p inrange(1, MAX_PAGE +1):print(f"[+] 正在抓取第 {p} 页 …") js = fetch_one_page(p) rows =[{"title": item["title"],"author": item["author"],"coverUrl": item["coverUrl"]}for item in js["data"]["list"]]ifnot writer: writer = csv.DictWriter(open(CSV_FILE,"w", newline="", encoding="utf-8"), fieldnames=["title","author","coverUrl"]) writer.writeheader() writer.writerows(rows)if js["data"]["total"]<= p * PAGE_SIZE:break time.sleep(random.uniform(*SLEEP_RANGE))print(f"[√] 抓取完成,已写入 {CSV_FILE}")if __name__ =="__main__": main()

运行后同级目录生成 xiuren_meta.csv,可导入 Excel 或数据库二次分析。若需增量更新,可把 CSV_FILE 改为 SQLite,并在写入前按 title 做唯一索引去重。
再次提醒:
仅抓取“公开可见”字段,不绕过登录、不破解加密参数;
速率温和,不干扰站点正常服务;
数据勿商用,尊重原作者版权。
祝各位读者调试顺利,也欢迎把改进方案提交到开源社区,共同维护良好的技术交流氛围。

Read more

用飞算JavaAI轻松完成高校宿舍管理系统

用飞算JavaAI轻松完成高校宿舍管理系统

今天我们使用飞算来完成高校宿舍管理系统。 一、需求分析与规划 1.1 功能需求与核心模块 高校宿舍管理系统主要服务于宿舍管理员、学生和学校管理部门,实现宿舍资源的数字化管理。系统核心功能包括:用户管理(登录认证、角色权限分配)、宿舍管理(楼栋房间信息、床位分配状态)、学生住宿管理(入住登记、宿舍分配调换、退宿处理)、日常管理(考勤记录、访客登记、违纪管理、卫生检查)、维修管理(故障申报、工单派发、进度跟踪)以及统计报表(入住率、费用统计、数据分析)等功能模块。 系统采用分层架构设计,包含八个核心模块:用户认证授权模块负责JWT令牌管理和权限控制;用户管理模块处理用户CRUD和角色分配;宿舍管理模块管理楼栋房间和床位状态;学生住宿模块处理入住分配和调宿业务;日常管理模块记录考勤访客和违纪信息;维修管理模块处理维修申请和工单流转;统计报表模块提供数据分析和图表展示;系统管理模块负责配置管理和日志监控。 1.2 技术选型 后端采用Spring Boot 2.

By Ne0inhk
66个JAVA常见代码大全:学完这篇从Java小白到AI全栈架构师

66个JAVA常见代码大全:学完这篇从Java小白到AI全栈架构师

66个JAVA常见代码大全:学完这篇从Java小白到AI全栈架构师 摘要:本文详细列举了 66 个 Java 编程中的关键代码示例,包括基础语法、数据类型、条件判断、循环、数组、方法、面向对象、继承、接口、抽象类、多态、封装、静态变量、内部类、匿名类、泛型、集合框架、异常处理、文件 I/O、多线程、同步以及高级并发概念,帮助你从入门到成长为架构师。 66个Java常见代码大全:学完这篇从Java小白到AI全栈架构师 引言 在当今的编程世界中,Java 作为一种广泛使用的编程语言,涵盖了从基础语法到复杂架构的方方面面。无论是刚接触编程的新手,还是经验丰富的开发者,掌握Java的核心技术和常用模式,都是成为一名高效开发者的必经之路。本篇文章将带您通过 66 个关键代码示例,从零开始深入学习 Java,从最基础的语法到高阶的并发编程,帮助您成为一名合格的

By Ne0inhk
华为OD机试双机位C卷:日志解析(C/C++/Java/Python/Go/JS)

华为OD机试双机位C卷:日志解析(C/C++/Java/Python/Go/JS)

日志解析 2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 200分题型 华为OD机试双机位C卷真题目录点击查看: 华为OD机试双机位C卷真题题库目录|机考题库 + 算法考点详解 题目描述 你是一个运维工程师,你同时负责n个系统的运维工作,已知每个系统每天会都从现场采集大量的现网运行日志(错误日志、接口日志等)下来生成一个日志文件,每个系统采集下来的日志文件大小均不相同。为了解析这些日志,你给每个系统配备了一台默认服务器进行日志解析,且此台服务器只能给本系统使用,由于所配置的服务器规则均相同,因为解析日志的速度也是相同的,即每秒钟可以解析defaultCnt条日志。 现在你发现解析的速度达不到预期,但你手头上还有一部分额外的资源可以使用,这些资源可以在任意时刻配置给任意一台服务器。但有个限制,那就是同一时刻只能配给其中一台服务器器,且服务器器是能整合全部额外资源,当然在下一秒钟即可配备给另外一台服务器。某一台服务器配备了额外资源以后,则每秒钟会增加解析extraCnt条日志,即每秒可解析(defaultCnt+extraCnt)条日志。 输入描述 输入一

By Ne0inhk