如何使用代理下载带有 url 的 zip 文件

Sur*_*ian 5 python urllib web-scraping python-requests

我已经实现了一个代码来下载股票市场所有日期的 bhav 副本。经过大约两年的抓取,我的IP似乎被封锁了。

这段代码对我不起作用。

import urllib.request
url = 'https://www1.nseindia.com/content/historical/DERIVATIVES/2014/APR/fo01APR2014bhav.csv.zip'
response = urllib.request.urlopen(url)
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

urllib.error.HTTPError: HTTP Error 403: Forbidden
Run Code Online (Sandbox Code Playgroud)

我想知道如何使用代理来获取数据。任何帮助将非常感激。

big*_*nty 2

import urllib.request

proxy_host = '1.2.3.4:8080'    # host and port of your proxy
url = 'https://www1.nseindia.com/content/historical/DERIVATIVES/2014/APR/fo01APR2014bhav.csv.zip'

req = urllib.request.Request(url)
req.set_proxy(proxy_host, 'http')

response = urllib.request.urlopen(req)
Run Code Online (Sandbox Code Playgroud)

为了获得更大的灵活性,您可以使用代理处理程序 - https://docs.python.org/3/library/urllib.request.html

proxy_handler = urllib.request.ProxyHandler({'http': '1.2.3.4:3128/'})
proxy_auth_handler = urllib.request.ProxyBasicAuthHandler()
proxy_auth_handler.add_password('realm', 'host', 'username', 'password')

opener = urllib.request.build_opener(proxy_handler, proxy_auth_handler)
Run Code Online (Sandbox Code Playgroud)