如何用Python提取Google Sheet单元格中|分隔的多URL并下载
这事儿不难,我给你整理了一套完整的Python实现方案,分分钟搞定URL拆分和文件下载:
实现步骤与代码示例
1. 先搞定依赖安装
我们会用到requests库处理HTTP下载,如果需要直接从Google Sheet读取内容,还要装gspread和oauth2client。打开终端执行:
# 基础下载功能所需 pip install requests # 如果要直接读Google Sheet,额外装这个 pip install gspread oauth2client
2. 核心实现代码
下面的代码包含URL拆分和文件下载的完整逻辑,还做了异常处理和文件名自动提取:
import requests from urllib.parse import urlparse def download_files_from_urls(url_string): # 拆分|分隔的URL,过滤掉空字符串,同时去掉每个URL前后的空格 urls = [url.strip() for url in url_string.split('|') if url.strip()] for url in urls: try: # 流式下载大文件,避免内存溢出 response = requests.get(url, stream=True) response.raise_for_status() # 请求失败时直接抛出异常 # 从URL路径中提取原始文件名 parsed_url = urlparse(url) filename = parsed_url.path.split('/')[-1] # 写入本地文件 with open(filename, 'wb') as file: for chunk in response.iter_content(chunk_size=8192): file.write(chunk) print(f"✅ 成功下载:{filename}") except Exception as e: print(f"❌ 下载失败 {url}:{str(e)}") # 测试用的示例字符串(替换成你从Google Sheet拿到的内容) sample_url_str = "https://www.jotform.com/uploads/prashant1508/201524278582053/4779305729913336783/Ashish Kumar_2020-Sep-21_2020-Oct-06.xlsx.xlsx | https://www.jotform.com/uploads/prashant1508/201524278582053/4779305729913336783/Brijesh Gupta_2020-Sep-17_2020-Oct-02.xlsx.xlsx | https://www.jotform.com/uploads/prashant1508/201524278582053/4779305729913336783/Dhanveer_2020-Sep-16_2020-Sep-30.xlsx.xlsx" # 执行下载 download_files_from_urls(sample_url_str)
3. 可选:直接从Google Sheet读取URL
如果不想手动复制单元格内容,可以用gspread直接读取。步骤如下:
- 去Google Cloud控制台创建服务账号,下载JSON密钥文件
- 把你的Google Sheet共享给服务账号的邮箱
- 运行下面的代码读取单元格:
import gspread from oauth2client.service_account import ServiceAccountCredentials # 授权访问Google Drive和Sheet scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive'] creds = ServiceAccountCredentials.from_json_keyfile_name('你的密钥文件名.json', scope) client = gspread.authorize(creds) # 打开目标表格和工作表(替换成你的表格名和工作表名) spreadsheet = client.open('我的表格').sheet1 # 读取指定单元格的内容(比如第2行第3列,行号列号从1开始) url_str_from_sheet = spreadsheet.cell(2, 3).value # 调用下载函数 download_files_from_urls(url_str_from_sheet)
一些小提示
stream=True:适合下载大文件,不会一次性把整个文件加载到内存- 异常处理:覆盖了网络错误、无效URL等常见问题,方便排查问题
- 文件名提取:用
urlparse从URL路径里拿原始文件名,避免手动命名出错
内容的提问来源于stack exchange,提问作者Manasa Javvaji
相关产品推荐
相关产品推荐

