2017-02-03 4 views
0

Ich habe zwei verschiedene Codes verwendet, um Datentabellen von einer Website abzurufen, für die Daten kostenlos zur Verfügung stehen. Aber jedes Mal, wenn ich mein Programm starte, erhalte ich den folgenden Fehler 'urllib.error.HTTPError: HTTP Error 403: Forbidden'. Außerdem scheinen die Links von einem Browser gut zu funktionieren. Irgendeine Idee, wie man dieses Problem löst?Abrufen von Datentabellen

PS: Daten können ohne Authentifizierung gesehen werden.

Antwort

0

Ich bin mir nicht sicher, warum der Server eine 301, genau, aber im Allgemeinen mit urllib direkt für eine High-Level-Anfrage wie diese wird entmutigt. Sie sollten stattdessen das Paket requests verwenden.

das Äquivalent requests holen:

r = requests.get("https://pakstockexchange.com/stock2/index_new.php?section=research&page=show_price_table_new&symbol=ABOT") 

funktioniert.

r.status_code == 200 
True 
+0

Ziemlich viel gibt mir was ich will. Aber wie mache ich es, nur die Datentabelle und nicht die ganze Seite zu lesen. –

+0

Das ist eine separate (und schwierigere) Frage. Die Seite, auf die Sie verlinken, lädt eine Menge JavaScript, die * dann * die aktuelle Tabelle lädt. Das heißt, die Tabelle wird nicht als HTML selbst veröffentlicht ... das Lesen würde eine Kombination von [Selenium] (http://selenium-python.readthedocs.io/getting-started.html) und [Pandas erfordern .read_html'] (http://pandas.pydata.org/pandas-docs/version/0.19.2/generated/pandas.read_html.html). Sind Sie sicher, dass es für diese Daten keine einfachere Quelle gibt? –

+0

Nein. Scheint so, als müsste ich Selen lernen und herausfinden, wie es mir bei meiner Lösung helfen kann. Wie auch immer, danke für die Antwort. Ein Teil des Problems wurde gelöst. –