Как использовать прокси для загрузки zip-файла с URL-адресом - PullRequest
6 голосов
/ 07 августа 2020

Я реализовал код для загрузки bhav-копий на все даты на фондовом рынке. Примерно через 2 года мой IP был заблокирован.

Этот код у меня не работает.

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

Это дает следующую ошибку:

urllib.error.HTTPError: HTTP Error 403: Forbidden

Я хотел бы знать, как я могу использовать прокси для получения данных. Любая помощь будет очень признательна.

Ответы [ 3 ]

2 голосов
/ 09 августа 2020

Работает нормально,

import requests

headers = {
    'authority': 'www.nseindia.com',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
    'accept': '*/*',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    'referer': 'https://www.nseindia.com/content/',
    'accept-language': 'en-US,en;q=0.9,lb;q=0.8',

}

url = "https://www1.nseindia.com/content/historical/DERIVATIVES/2014/APR/fo01APR2014bhav.csv.zip"

r = requests.get(url,headers=headers)

with open("data.zip","wb") as f:
    f.write(r.content)

, если у вас прокси,

proxy = {"http" : "x.x.x.x:pppp",
         "https" :"x.x.x.x:pppp",
        }
r = requests.get(url, headers=headers, proxies=proxy)
2 голосов
/ 07 августа 2020
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)

Для большей гибкости вы можете использовать обработчик прокси - 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)
1 голос
/ 16 августа 2020

Вам не нужно использовать прокси для загрузки этого файла. Приведенный ниже код будет работать как шарм:

import urllib.request
url = 'https://www1.nseindia.com/content/historical/DERIVATIVES/2014/APR/fo01APR2014bhav.csv.zip'

req = urllib.request.Request(url)

# Add referer header to bypass "HTTP Error 403: Forbidden"
req.add_header('Referer', 'https://www.nseindia.com')
res = urllib.request.urlopen(req)

# Save it into file.zip
with open("file.zip", "wb") as f:
    f.write(res.read())

Если вы хотите получить бесплатные прокси, посетите https://free-proxy-list.net/. Затем следуйте ответу @pyd по адресу { ссылка }

...