Python数据导出至Excel:按指定格式构建工作表
解决方案
我们可以用pandas库快速实现结构化数据的Excel导出,它能轻松将爬取到的内容整理成规范表格格式。
步骤1:安装依赖库
先安装所需工具包:
pip install pandas requests beautifulsoup4 openpyxl
步骤2:修改爬取脚本
以下是调整后的完整代码,实现数据收集与Excel导出:
import requests from bs4 import BeautifulSoup import pandas as pd def analyze(i): try: url = f"https://ktarena.com/fr/207-dofus-world-cup/match/{i}/1" page = requests.get(url) page.raise_for_status() # 捕获请求失败的异常 soup = BeautifulSoup(page.content, "html.parser") # 提取并整理单场比赛数据 arena = soup.find("span", attrs=('name')).text.strip() title = soup.select_one("[class='team'] .name a").text.strip() point = soup.select(".result .points")[0].text.strip() image_titles = ', '.join([i['title'].strip() for i in soup.select("[class$='dead'] > img")]) title_ano = soup.select("[class='team'] .name a")[1].text.strip() point_ano = soup.select(".result .points")[1].text.strip() image_titles_ano = ', '.join([i['title'].strip() for i in soup.select("[class='class'] > img")]) return { "竞技场名称": arena, "队伍1名称": title, "队伍1积分": point, "队伍1角色": image_titles, "队伍2名称": title_ano, "队伍2积分": point_ano, "队伍2角色": image_titles_ano } except Exception as e: print(f"爬取匹配{i}时出错: {str(e)}") return None # 批量收集所有有效数据 data_list = [] for i in range(46270, 46394): match_data = analyze(i) if match_data: data_list.append(match_data) # 导出到Excel if data_list: df = pd.DataFrame(data_list) df.to_excel("Dofus世界杯数据.xlsx", index=False, engine="openpyxl") print("数据已成功导出到Excel文件") else: print("未收集到有效数据")
代码说明
- 新增异常捕获:避免单个页面爬取失败导致整个脚本中断
- 用字典统一整理单场比赛数据,保证结构清晰
- 用
strip()去除文本多余空格,提升数据整洁度 - 借助
pandas.DataFrame将列表转成表格,to_excel方法直接导出,index=False表示不生成默认行索引
内容的提问来源于stack exchange,提问作者Joost
相关产品推荐
相关产品推荐

