首页 > 解决方案 > 从多个 URL 中提取数据帧,导出到一个 CSV

问题描述

总的来说,我对 Python 和编码相对较新,并且正在为我正在从事的项目而苦苦挣扎。

我正在尝试将来自多个 URL 的数据提取到一个大型电子表格中。我认为数据框正在循环中被覆盖,但我不确定如何将它们全部拉到一个大型电子表格中。

建议将不胜感激! 更新

import requests
import pandas as pd

dates = ['Jan2014', 'Feb2014', 'Mar2014', 'Apr2014', 'May2014', 'Jun2014', 'Jul2014', 'Aug2014', 'Sep2014', 'Oct2014', 'Nov2014', 'Dec2014']
urlprefix = 'https://www.testurl.com'

for i in dates:
    page = urlprefix + i + 'expenses.htm'

    html = requests.get(page).content
    df_list = pd.read_html(html)
    df = df_list[-1]
    df_list.append(df)

big_df = pd.concat(df_list, ignore_index=True)
print(big_df)
big_df.to_csv('render.csv', encoding="utf-8-sig")

标签: python-3.x

解决方案


  • .read_html()可以直接读表
    • 将 HTML 表格读入 DataFrame 对象列表。
  • 您当前的代码获取数据框列表,获取列表中的最后一个数据框,然后将其附加到同一列表中。
import pandas as pd

dates = ['Jan2014', 'Feb2014', 'Mar2014', 'Apr2014', 'May2014', 'Jun2014', 'Jul2014', 'Aug2014', 'Sep2014', 'Oct2014', 'Nov2014', 'Dec2014']
urlprefix = 'https://www.testurl.com'

df_list = list()  # list of dataframes to keep

for i in dates:
    page = urlprefix + i + 'expenses.htm'

    df = pd.read_html(page)[-1]  # get dataframe of last table
    df_list.append(df)  # append to list of dataframes to keep


big_df = pd.concat(df_list, ignore_index=True)
print(big_df)
big_df.to_csv('render.csv', encoding="utf-8-sig")

推荐阅读