如何从网站下载数千个Excel文件?
这是我们要讨论的网站。
我想下载从2009年开始每一年的Excel文件。
我不想一个一个手动点击下载,有没有什么简单的方法?我对编程的经验不多,所以请保持简单。我知道Python可以用,但我没有Python的经验,VBA也许可以,但我在那方面也没有运气。
现在我只想把所有文件都下载下来,如果还有办法把这些文件合并在一起,那就更好了。老实说,我完全不会编程,但看起来这是完成这个任务的唯一方法,而学习一门完整的编程语言可能需要太长时间,我需要尽快下载这些文件。
如果这太复杂了,请告诉我是否应该咬咬牙,手动去做。
谢谢。
1 个回答
2
假设你已经有一个可以运行代码的环境(如果没有的话,请安装anaconda并使用jupyter notebook),这段代码就能解决问题:
第一次你需要安装一些库(只需运行一次):
%pip install bs4
%pip install requests
然后你就可以运行代码了:
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
def download_excel_files(url, download_path):
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
links = soup.find_all('a', href=True)
for link in links:
file_url = link['href']
if file_url.endswith('.xls') or file_url.endswith('.xlsx'):
full_file_url = urljoin(url, file_url)
file_name = os.path.join(download_path, os.path.basename(file_url))
with open(file_name, 'wb') as f:
file_response = requests.get(full_file_url)
f.write(file_response.content)
print(f"File '{file_name}' succesfully downloaded")
else:
print("Page error")
接下来,你可以循环年份并像这样调用函数:
base_url = 'https://clientportal.jse.co.za/downloadable-files?RequestNode=/Safex/agriculture.stats/'
for year in range(2009, 2025):
url = base_url + str(year)
download_folder = str(year)
os.makedirs(download_folder, exist_ok=True)
download_excel_files(url, download_folder)
因为我假设你只是为了这个目的在使用代码,所以我会避免解释每一个步骤。如果你需要更多的帮助,请随时问我。