如何在python中将zip文件抓取到单个数据帧中



我对网络报废很陌生,我正在努力了解如何刮取这个网站上的所有zip文件和常规文件。最终目标是抓取所有数据,我最初认为我可以使用pd.read_html并输入每个链接的列表,并在每个zip文件中循环。

我对网络抓取非常陌生,所以任何帮助都会非常有用,到目前为止我已经尝试了几个例子,请参阅下面的代码

import pandas as pd
pd.read_html("https://www.omie.es/en/file-access-list?parents%5B0%5D=/&parents%5B1%5D=Day-ahead%20Market&parents%5B2%5D=1.%20Prices&dir=%20Day-ahead%20market%20hourly%20prices%20in%20Spain&realdir=marginalpdbc",match="marginalpdbc_2017.zip")

所以这就是我希望输出的样子,除了每个zip文件都需要是自己的数据帧才能使用/循环。目前,它所做的似乎只是下载zip文件的所有名称,而不是实际数据。

谢谢

要打开zip文件并将其中的文件读取到数据帧,可以使用下一个示例:

import requests
import pandas as pd
from io import BytesIO
from zipfile import ZipFile
zip_url = "https://www.omie.es/es/file-download?parents%5B0%5D=marginalpdbc&filename=marginalpdbc_2017.zip"
dfs = []
with ZipFile(BytesIO(requests.get(zip_url).content)) as zf:
for file in zf.namelist():
df = pd.read_csv(
zf.open(file),
sep=";",
skiprows=1,
skipfooter=1,
engine="python",
header=None,
)
dfs.append(df)
final_df = pd.concat(dfs)
# print first 10 rows:
print(final_df.head(10).to_markdown(index=False))

打印:

0
2017201720172017201720172017201720172017

最新更新