python - 使用没有 selenium 的 Python 下载文件,例如 Chrome 的“将链接另存为”
问题描述
有一个网页,我可以使用 chrome 中的“将链接另存为”选项下载 zip 文件,但是当我复制链接地址并在浏览器中打开它时,它会返回 403/forbidden。我尝试使用请求库保存文件,但它也得到禁止响应。
我不知道 chrome 如何下载它,但我无法使用 requests 库下载。
如何在不使用 selenium web 驱动程序的情况下下载文件,因为这对于这个简单的任务来说太过分了?
解决方案
我建议对此使用请求。下面的简单示例已填写第一个文件:
url = 'https://www.nseindia.com/content/historical/EQUITIES/2003/DEC/cm01DEC2003bhav.csv.zip'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36', 'Referer': 'https://www.nseindia.com/'}
r = requests.get(url, allow_redirects=True, headers=headers)
open('cm01DEC2003bhav.csv.zip', 'wb').write(r.content)
网站检查标头中的引用者,如果引用者与网站本身不匹配,则拒绝请求。
推荐阅读
- python - 我如何在 Python 中使用 pandas 多年来每月分组?
- apollo - WebSocket 连接到“ws://localhost:4444/subscriptions”失败:WebSocket 在连接建立之前关闭
- highcharts - Highcharts如何以编程方式放大?与您选择和区域进行视觉缩放时相同吗?
- sql - TediousJS 问题
- flutter - 如何在 Dart 中初始化嵌套对象。NoSuchMethodError:null 上的无效成员:'user'
- powershell - 初学者问题:如何使用powershell脚本审计/验证远程服务器本地管理员组成员是否正确
- angular - Firebase RealTime DataBase:显示与某个类别匹配的对象(Angular)
- object - 经典 ASP 通过 global.asa 定义和使用全局对象
- red5 - 我可以在安全端口 443 red5pro 上看到实时应用程序
- elasticsearch - 查询字符串为空时返回所有文档