网络爬虫时如何开启pro-football-reference站点的表格筛选开关?
解决方案
那个「排序表格时隐藏非达标项」是页面前端JavaScript实现的交互功能,你用urllib请求拿到的是服务端返回的原始静态HTML,所有数据(包括达标/非达标球员)都在返回内容里,开关状态不会影响服务端返回结果,因此无需也无法通过调整爬虫请求切换开关,直接按页面内置的标记过滤非达标行即可:
站点已经给所有非达标球员的表格行加了non_qualifier的CSS类,只要爬取时过滤掉带该类的行,得到的结果就和开关开启后的展示效果完全一致。
修改后的代码
from urllib.request import urlopen from bs4 import BeautifulSoup url = 'https://www.pro-football-reference.com/years/2021/rushing.htm' html = urlopen(url) stats_page = BeautifulSoup(html, features="lxml") rows = [] for row in stats_page.find_all('tr')[1:]: # 过滤空行、非达标行 row_cells = row.find_all('td') if not row_cells or 'non_qualifier' in row.get('class', []): continue rows.append([cell.get_text() for cell in row_cells]) # 按Y/A列倒序排序 rows.sort(key=lambda x: float(x[11]), reverse=True)
效果验证
过滤后排序的结果会和你开启开关后看到的排序结果完全一致,不会再出现仅冲球1、2次的非达标球员排在前列的情况。
内容的提问来源于stack exchange,提问作者earningjoker430
相关产品推荐
相关产品推荐

