Python+requests-html爬取数据后,如何导出至Excel文件?
解决方案
要把爬取的数据导出到Excel,核心是先把零散的数据整理成结构化格式,再用pandas的to_excel方法导出。以下是修改后的完整代码:
from requests_html import HTMLSession import pandas as pd matchlink = 'https://www.betexplorer.com/football/serbia/prva-liga/results/' session = HTMLSession() r = session.get(matchlink) allmatch = r.html.find('.in-match') results = r.html.find('.h-text-center a') matchodds = r.html.find('[data-odd]') odds = [matchodd.attrs["data-odd"] for matchodd in matchodds] # 初始化空列表存储结构化数据 data_list = [] idx = 0 for match, res in zip(allmatch, results): if res.text == 'POSTP.': continue # 拆分赔率为单独的胜、平、负项 win_odd, draw_odd, lose_odd = odds[idx], odds[idx+1], odds[idx+2] # 以字典形式存入列表,字典key将作为Excel表头 data_list.append({ '比赛对阵': match.text, '比赛结果': res.text, '胜赔率': win_odd, '平赔率': draw_odd, '负赔率': lose_odd }) idx += 3 # 转成DataFrame格式 df = pd.DataFrame(data_list) # 导出到Excel,index=False避免导出默认行索引 df.to_excel('塞尔维亚联赛赛事数据.xlsx', index=False) print("数据已成功导出到Excel文件!")
关键说明:
- 不再直接打印数据,而是将每行数据以字典形式存入列表,让数据结构更清晰,Excel表头自动对应字典的键。
- 导出xlsx格式需要依赖
openpyxl库,运行报错的话先执行安装命令:pip install openpyxl - 若习惯用列表嵌套列表的形式,也可以这样写:
# 初始化列表,第一行是表头 data_list = [['比赛对阵', '比赛结果', '胜赔率', '平赔率', '负赔率']] idx = 0 for match, res in zip(allmatch, results): if res.text == 'POSTP.': continue win_odd, draw_odd, lose_odd = odds[idx], odds[idx+1], odds[idx+2] data_list.append([match.text, res.text, win_odd, draw_odd, lose_odd]) idx += 3 df = pd.DataFrame(data_list[1:], columns=data_list[0]) df.to_excel('塞尔维亚联赛赛事数据.xlsx', index=False)
内容的提问来源于stack exchange,提问作者Terra1
相关产品推荐
相关产品推荐

