Próbuję zautomatyzować pobieranie historycznych danych giełdowych za pomocą Pythona. Adres URL, który próbuję otworzyć, odpowiada plikowi CSV, ale nie mogę otworzyć go za pomocą urllib2. Próbowałem zmienić klienta użytkownika, jak określono w kilku pytaniach wcześniej, próbowałem nawet zaakceptować pliki cookie odpowiedzi, ale bez powodzenia. Czy możesz mi pomóc.
Uwaga: ta sama metoda działa w przypadku Yahoo Finance.
Kod:
import urllib2,cookielib
site= "http://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/getHistoricalData.jsp?symbol=JPASSOCIAT&fromDate=1-JAN-2012&toDate=1-AUG-2012&datePeriod=unselected&hiddDwnld=true"
hdr = {'User-Agent':'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
Błąd
Plik „C: \ Python27 \ lib \ urllib2.py”, wiersz 527, w http_error_default podnieś błąd HTTPError (req.get_full_url (), code, msg, hdrs, fp) urllib2.HTTPError: Błąd HTTP 403: zabronione
Dziękuję za Twoją pomoc
Odpowiedzi:
Dodając kilka dodatkowych nagłówków, udało mi się uzyskać dane:
Właściwie działa tylko z tym jednym dodatkowym nagłówkiem:
źródło
To zadziała w Pythonie 3
źródło
Witryna NSE uległa zmianie i starsze skrypty są częściowo optymalne w stosunku do obecnej witryny. Ten fragment może gromadzić codzienne szczegóły dotyczące bezpieczeństwa. Szczegóły obejmują symbol, typ papieru wartościowego, poprzednie zamknięcie, cenę otwarcia, wysoką cenę, niską cenę, średnią cenę, ilość będącą przedmiotem obrotu, obrót, liczbę transakcji, ilości do dostarczenia oraz stosunek ilości dostarczonych do sprzedanych w procentach. Te wygodnie przedstawione jako lista w formie słownikowej.
Wersja Pythona 3.X z żądaniami i BeautifulSoup
Poza tym jest to stosunkowo modułowy i gotowy do użycia fragment kodu.
źródło