[英]How to download file embedded as image with pd.read_csv()?
我想知道如何使用带有 pd.read_csv() 的“接受和下载”按钮直接下载并将其读入 pd? 通常我可以复制下载链接并将其粘贴,但在这种情况下,它会将其识别为图像,我无法获取下载链接。
即使这个问题得到了回答,让我添加一些更多的成分来使它成为一个动态的。 学分:@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.