如何将爬虫输出转换为DataFrame?无法确定输出数据类型
解决方法:将爬虫数据转为DataFrame
首先你当前的代码只是逐个打印score字符串,没有把爬取到的数据结构化存储,所以第一步得先把所有字段收集起来,再转成DataFrame。
步骤说明:
- 先导入
pandas库(未安装的话先执行pip install pandas完成安装) - 初始化一个空列表,用来存储每一行的结构化数据
- 循环爬取时,把每一行的
date、opponent1、opponent2、score整理成字典,追加到列表中 - 循环结束后,用
pandas.DataFrame()把列表转成DataFrame
修改后的完整代码:
import requests from bs4 import BeautifulSoup import pandas as pd # 导入pandas库 url = "https://www.bvb.de/Spiele/Alle-Spiele" soup = BeautifulSoup(requests.get(url).content, "html.parser") # 初始化空列表,用于存储结构化数据 data = [] for row in soup.select("tr:has(td)"): tds = [td.get_text(strip=True, separator=" ") for td in row.select("td")] if len(tds) > 2: date = tds[0] opponent1 = tds[1] opponent2 = tds[2] score = tds[3] # 将当前行数据整理为字典,加入数据列表 data.append({ "日期": date, "主队": opponent1, "客队": opponent2, "比分": score }) # 转换为DataFrame df = pd.DataFrame(data) # 可以打印前几行查看结果 print(df.head())
关于数据类型的说明:
你当前代码里的score是字符串类型,每次循环仅输出单个字符串,没有形成结构化数据集。通过把每一行数据存入字典再汇总到列表,我们得到了列表嵌套字典的结构化数据,这种格式可以直接被pandas识别并转换为DataFrame。
内容的提问来源于stack exchange,提问作者Theresa_S
相关产品推荐
相关产品推荐

