繁体   English   中英

如何使用 pd.read_csv() 下载嵌入为图像的文件?

[英]How to download file embedded as image with pd.read_csv()?

我想知道如何使用带有 pd.read_csv() 的“接受和下载”按钮直接下载并将其读入 pd? 通常我可以复制下载链接并将其粘贴,但在这种情况下,它会将其识别为图像,我无法获取下载链接。

链接: https://geodash.vpd.ca/opendata/

即使这个问题得到了回答,让我添加一些更多的成分来使它成为一个动态的。 学分:@JasonGroux

在这里,让我们假设该操作将是获取并使用BeautifulSoup执行操作,然后我们读取数据。

from bs4 import BeautifulSoup
import requests, io, urllib.request
import zipfile
html = urllib.request.urlopen('https://geodash.vpd.ca/opendata/')
soup = BeautifulSoup(html)
action = soup.find('form').get('action')
resp = requests.get(action)
z = zipfile.ZipFile(io.BytesIO(resp.content))
df = pd.read_csv(z.open(os.path.basename(action).replace('.zip','.csv')))

如果您使用开发工具检查按钮,您可以看到表单指向此 URL

<form action="http://geodash.vpd.ca/opendata/crimedata_download/crimedata_csv_all_years.zip" method="get">

所以你可以做以下

import requests, zipfile, io
r = requests.get('http://geodash.vpd.ca/opendata/crimedata_download/crimedata_csv_all_years.zip')
z = zipfile.ZipFile(io.BytesIO(r.content))
df = pd.read_csv(z.open('crimedata_csv_all_years.csv'))

调用df.head()将 output

                         TYPE  YEAR  MONTH  DAY  HOUR  MINUTE    HUNDRED_BLOCK NEIGHBOURHOOD              X             Y
0  Break and Enter Commercial  2012     12   14     8      52              NaN      Oakridge  491285.000000  5.453433e+06
1  Break and Enter Commercial  2019      3    7     2       6    10XX SITKA SQ      Fairview  490612.964805  5.457110e+06
2  Break and Enter Commercial  2019      8   27     4      12  10XX ALBERNI ST      West End  491007.779775  5.459174e+06
3  Break and Enter Commercial  2014      8    8     5      13  10XX ALBERNI ST      West End  491015.943352  5.459166e+06
4  Break and Enter Commercial  2005     11   14     3       9  10XX ALBERNI ST      West End  491021.385727  5.459161e+06

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM