如何用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
相关产品推荐
相关产品推荐

