Python使用wget下载PDF报HTTP Error 403: Forbidden怎么解决
批量下载PDF程序Windows Server 2016环境报错排查方案
- 确认依赖合法性:Windows Server 2016默认无内置wget组件,若你使用的Python wget库依赖系统级wget会直接触发报错,优先替换为无额外系统依赖的requests库实现下载逻辑。
- 路径权限校验:Windows Server权限管控规则更严格,确认程序运行账户对
pasta_pdf对应目录拥有写入权限,避免os.chdir操作或文件写入时触发权限拒绝错误。 - 网络策略校验:Windows Server默认防火墙、IE安全等级配置较高,先手动在服务器内置浏览器访问任意一个下载链接,确认网络连通性、无SSL拦截、无站点访问限制。
- 异常兼容优化:原有逻辑仅判断链接非空,未覆盖无效URL、请求超时、服务端拒绝访问等异常场景,可参考以下优化后的代码实现:
import os import requests import pandas as pd def download_doc(pasta_pdf, base_links): # 直接指定存储路径,避免修改全局工作目录带来的潜在冲突 for idx, link in enumerate(base_links['Link_Download_Regulamento']): # 兼容pandas空值判断,覆盖None、NaN等多种空场景 if pd.isna(link): continue try: # verify参数可根据链接是否为自签名SSL证书调整开启或关闭 resp = requests.get(link, timeout=30, verify=False) # 校验HTTP请求状态码,非200直接抛出异常 resp.raise_for_status() # 自定义文件名避免重复冲突 file_save_path = os.path.join(pasta_pdf, f"regulamento_{idx}.pdf") with open(file_save_path, 'wb') as f: f.write(resp.content) except Exception as e: print(f"链接{link}下载失败,错误详情:{str(e)}") download_doc(pasta_origem, df_regulamentos_novos)
- 若坚持使用wget库,需先在服务器对应Python环境执行
pip install wget确认库安装完成,同时排查系统环境变量中是否存在同名wget程序导致调用冲突。
内容的提问来源于stack exchange,提问作者Perciliano
相关产品推荐
相关产品推荐

