在线浏览“秀人网合集”的新思路: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

基于SpringBoot和PostGIS的城市道路里程信息转换-以湖南省OSM数据为例

基于SpringBoot和PostGIS的城市道路里程信息转换-以湖南省OSM数据为例

目录 前言 一、PostGIS的查询方案实现与分析 1、需求描述 2、PostGIS的实现方式 二、使用物理表进行结果缓存 1、物理表的设计 2、JavaBean的设计 3、MybatisPlus实现数据写入 4、数据库缓存表查询 三、总结 前言         随着城市化进程的加速,城市交通基础设施的管理和优化成为城市可持续发展的关键环节。城市道路作为交通网络的核心组成部分,其里程信息的准确获取和高效处理对于交通规划、智能交通系统建设以及城市资源分配等具有极其重要的意义。在众多地理空间数据源中,开放街道地图(OpenStreetMap,OSM)因其数据的开放性、高精度以及广泛的社区支持,成为城市道路数据获取的重要来源之一。近年来,随着地理信息系统(GIS)技术的不断发展,PostGIS作为一种强大的空间数据库扩展,为地理空间数据的存储、查询和分析提供了强大的支持。PostGIS能够处理复杂的地理空间数据,包括道路网络的拓扑结构和几何信息,这使得它成为处理OSM数据的理想选择。然而,PostGIS在处理大规模数据时,尤其是在实时求解城市道路里程信息时,

By Ne0inhk
Rust Actix-web框架源码解析:基于Actor模型的高性能Web开发

Rust Actix-web框架源码解析:基于Actor模型的高性能Web开发

人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。———— 马尔科姆·格拉德威尔 🌟 Hello,我是Xxtaoaooo! 🌈 “代码是逻辑的诗篇,架构是思想的交响” actix-web - github 在现代Web开发领域,性能与并发处理能力已成为衡量框架优劣的核心指标。Rust语言凭借其零成本抽象和内存安全特性,为高性能Web服务开发提供了新的可能性。而Actix-web作为Rust生态中最具代表性的Web框架,其基于Actor模型的设计理念更是将并发处理推向了新的高度。 深入研究Actix-web的源码实现,我发现这个框架的精妙之处不仅在于其出色的性能表现,更在于其优雅的架构设计。Actor模型作为一种并发计算模型,通过消息传递机制实现了真正的异步处理,避免了传统多线程编程中的锁竞争问题。在Actix-web中,每个HTTP请求都被视为一个独立的Actor,通过消息队列进行通信,这种设计使得系统能够轻松处理数万级别的并发连接。 从技术实现角度来看,Actix-web的核心组件包括Actor系统、

By Ne0inhk
Flutter 组件 reaxdb_dart 适配鸿蒙 HarmonyOS 实战:响应式 NoSQL 数据库,构建高性能本地持久化与分布式状态同步架构

Flutter 组件 reaxdb_dart 适配鸿蒙 HarmonyOS 实战:响应式 NoSQL 数据库,构建高性能本地持久化与分布式状态同步架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 reaxdb_dart 适配鸿蒙 HarmonyOS 实战:响应式 NoSQL 数据库,构建高性能本地持久化与分布式状态同步架构 前言 在鸿蒙(OpenHarmony)生态迈向全场景协同、涉及极高频率的端侧数据持久化、实时 UI 数据绑定及分布式节点状态同步的背景下,如何实现一套既能保障数据“强一致性”、又能提供毫秒级检索性能且具备天然“响应式(Reactive)”特性的本地存储引擎,已成为决定应用交互流畅度与底层架构灵活性。在鸿蒙设备这类强调 AOT 极致效能与沙箱存储严格隔离的环境下,如果应用依然依赖臃肿的传统 SQL 或非响应式的 Key-Value,由于由于由于由于 UI 与数据库间的频繁轮询,极易由于由于“数据 IO 阻塞”导致鸿蒙应用在高并发读写时发生明显的帧率抖动。 我们需要一种能够解耦存储逻辑、支持 Stream 级变更监听且具备高性能二进制序列化架构的嵌入式

By Ne0inhk
Linux 系统 MySQL 8.0 详细安装教程

Linux 系统 MySQL 8.0 详细安装教程

文章目录 * 一、安装前准备 * 1. 系统要求 * 2. 清理旧版 MySQL(可选) * 二、安装方式一:官方 YUM/APT 仓库安装(推荐) * 2.1 CentOS 系统(YUM 仓库) * 2.2 Ubuntu 系统(APT 仓库) * 三、安装方式二:二进制包安装(适合自定义安装路径) * 四、MySQL 基础配置 * 4.1 编辑主配置文件 my.cnf * 4.2 启动 MySQL 服务并设置开机自启 * 4.3 重置 root 密码(

By Ne0inhk