如何使用BeautifulSoup抓取网站全部分页的页面数据
问题背景
需要采集apexranked.com站点全部分页的排行数据,自行编写的分页遍历代码无法生效,目标采集页面截图如下:
原有失效代码
url = 'https://apexranked.com/' page = 1 while page != 121: url = f'https://apexranked.com/?page={page}' print(url) page = page + 1
代码核心失效原因有两点:
- 分页URL构造逻辑错误:站点分页不是通过
?page=查询参数实现,而是采用路径分页规则,真实分页地址格式为https://apexranked.com/page/{页码}/,错误的URL会直接返回首页内容或者404 - 代码仅构造打印了URL,没有发起真实HTTP请求、添加反爬绕过配置、也没有编写页面解析逻辑,根本无法拿到有效页面数据
BeautifulSoup 可行爬取方案
前置依赖
先安装需要的第三方库:
pip install requests beautifulsoup4
完整实现代码
import requests from bs4 import BeautifulSoup import time # 配置基础请求头绕过反爬,无请求头会被Cloudflare拦截返回403 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Referer": "https://apexranked.com/" } def parse_single_page(html): """解析单页内容,可根据采集需求修改对应选择器""" soup = BeautifulSoup(html, "html.parser") # 示例提取排行条目,实际选择器对照页面DOM结构调整即可 rank_rows = soup.select(".player-row") page_data = [] for row in rank_rows: player_name = row.select_one(".player-name").text.strip() if row.select_one(".player-name") else "" rank_score = row.select_one(".rank-score").text.strip() if row.select_one(".rank-score") else "" page_data.append({ "player_name": player_name, "rank_score": rank_score }) return page_data if __name__ == "__main__": all_data = [] total_page = 121 for page in range(1, total_page+1): # 构造符合站点规则的分页URL url = "https://apexranked.com/" if page == 1 else f"https://apexranked.com/page/{page}/" resp = requests.get(url, headers=headers, timeout=10) # 异常状态重试/跳过 if resp.status_code != 200: print(f"第{page}页请求失败,状态码:{resp.status_code}") time.sleep(2) continue single_page_data = parse_single_page(resp.text) all_data.extend(single_page_data) print(f"第{page}页采集完成,累计获取{len(all_data)}条数据") # 添加请求延时,避免触发频率限制 time.sleep(1) # 后续可自行添加存储逻辑,比如写入CSV、JSON文件 print(f"全部分页采集完成,总数据量:{len(all_data)}")
补充说明
- 如果遇到Cloudflare 5秒盾拦截,可替换
requests为cloudscraper库发起请求,即可绕过基础JS验证 - 代码中示例的CSS选择器仅作参考,需要根据你实际要采集的字段,对照页面DOM结构调整
- 请控制请求频率,不要对站点服务器造成不必要的压力
内容的提问来源于stack exchange,提问作者UBIYTSV
相关产品推荐
相关产品推荐

