You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现动漫网站爬虫自动翻页,无需手动设置总页数

实现自动识别总页数的爬虫优化方案

要实现自动翻页,核心是从网站的分页控件中提取总页数,而非手动设置固定值。这类动漫网站的分页区域通常会包含所有页码链接(或“最后一页”按钮),我们可以先请求首页解析分页元素拿到最大页码,再基于该数值循环爬取所有页面。

修改后的完整代码

import requests
from bs4 import BeautifulSoup
import json

import warnings
warnings.filterwarnings("ignore")

BASE_URL = 'https://hd8.4lordserials.xyz/anime-serialy'

session = requests.Session()
session.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0'

items = []

# 第一步:自动获取网站总页数
rs = session.get(BASE_URL, verify=False)
rs.raise_for_status()
soup = BeautifulSoup(rs.content, 'html.parser')

# 提取分页区域的页码元素(适配常见的分页类名,若网站结构变更需调整选择器)
page_num_elements = soup.select('.page-numbers')
max_page = 1

for elem in page_num_elements:
    try:
        page_num = int(elem.text.strip())
        if page_num > max_page:
            max_page = page_num
    except ValueError:
        # 跳过"下一页""上一页"这类非数字的分页按钮
        continue

# 第二步:循环爬取所有页面
for page in range(1, max_page + 1):
    url = f'{BASE_URL}/page/{page}/' if page > 1 else BASE_URL
    print(url)

    rs = session.get(url, verify=False)
    rs.raise_for_status()

    soup = BeautifulSoup(rs.content, 'html.parser')
    for item in soup.select('.th-item'):
        title = item.select_one('.th-title').text
        url = item.a['href']
        items.append({
            'title': title,
            'url': url,
        })

with open('out.json', 'w', encoding='utf-8') as f:
    json.dump(items, f, indent=4, ensure_ascii=False)

关键说明

  • 代码通过.page-numbers定位分页元素,这是这类网站的通用分页类名;若后续网站结构变更,需打开浏览器开发者工具,查看分页元素的实际类名并修改选择器。
  • 用try-except捕获非数字内容,避免“下一页”“上一页”这类按钮干扰页码提取。
  • 若网站仅1页(无分页控件),max_page会保持默认值1,不会触发无效循环。

内容的提问来源于stack exchange,提问作者Galo Galo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:07:17