Python抓取JavaScript动态生成表格:如何提取目标站点前7列数据
解决思路
- 你已经调用了
resp.html.render()完成了页面JS渲染,不需要额外解析script标签内容,渲染后的HTML已经包含完整的可见表格结构 - 直接定位页面中的比赛表格,逐行读取单元格内容,筛选前7列即可
修正后的可运行代码
from requests_html import HTMLSession from bs4 import BeautifulSoup session = HTMLSession() resp = session.get("https://madduxsports.com/college-basketball-lines.php") # 可根据网络情况调整sleep参数延长等待时间,单位为秒 resp.html.render(sleep=2) soup = BeautifulSoup(resp.html.html, "lxml") # 定位目标表格 table = soup.find("table", class_="dbtable") # 提取所有行,[1:]表示跳过表头,需要保留表头可删除该切片 rows = table.find_all("tr")[1:] result = [] for row in rows: cells = row.find_all("td") # 过滤空行,只保留前7列数据 if len(cells) >= 7: row_data = [cell.get_text(strip=True) for cell in cells[:7]] result.append(row_data) # 输出验证结果 for item in result: print(item)
补充说明
- 如果遇到渲染超时报错,可给
render()方法添加timeout=20参数延长超时阈值 - 提取到的结果可根据需求自行存储为csv、json等格式
内容的提问来源于stack exchange,提问作者e417927
相关产品推荐
相关产品推荐

