使用BeautifulSoup无法找到class为data_grid的元素求助
解决Sports Reference页面data_grid元素爬取失败问题
问题原因
Sports Reference网站会将目标表格内容包裹在HTML注释中,直接通过requests获取的源码里,data_grid元素并非直接处于DOM结构中,而是被包含在<!-- ... -->注释块内,因此默认的BeautifulSoup解析无法直接定位到它。
解决方案
需要先提取页面中的所有注释内容,再对注释内的HTML进行二次解析,即可获取目标元素:
from bs4 import BeautifulSoup, Comment import requests link = 'https://www.sports-reference.com/cbb/players/temetrius-morant-1.html' html_text = requests.get(link).text soup = BeautifulSoup(html_text, 'html.parser') # 提取页面中所有注释节点 comments = soup.find_all(text=lambda text: isinstance(text, Comment)) # 遍历注释,解析其中的HTML内容 for comment in comments: comment_soup = BeautifulSoup(comment, 'html.parser') data_grid = comment_soup.find(class_='data_grid') if data_grid: # 这里可以处理获取到的data_grid内容,比如打印或提取数据 print(data_grid.prettify()) break # 找到目标后退出循环
代码说明
- 导入
Comment类用于识别HTML注释节点 - 通过
lambda筛选出所有注释类型的文本节点 - 将每个注释内容重新解析为BeautifulSoup对象
- 在解析后的注释内容中查找
data_grid元素,找到后即可进行后续数据提取
内容的提问来源于stack exchange,提问作者jmich738
相关产品推荐
相关产品推荐

