2016-05-01 13 views
3

Ich versuche, die URL dieser API von der Sunlight Foundation zu öffnen und die Daten von der Seite in JSON zurückzugeben. Das ist der Code, den ich produziert habe, abzüglich der Klammern um myapikey.Öffnen einer URL mit Urllib in Python 3

import urllib.request.urlopen 
import json 

urllib.request.urlopen("https://sunlightlabs.github.io/congress/legislators?api_key='(myapikey)") 

und im diesen Fehler

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
ImportError: No module named request.urlopen 

, was mache ich falsch? ive recherchiert in https://docs.python.org/3/library/urllib.request.html und immer noch kein Fortschritt

Antwort

5

Sie müssen from urllib.request import urlopen verwenden, auch schlage ich vor, Sie verwenden die with Anweisung beim Öffnen einer Verbindung.

from urllib.request import urlopen 

with urlopen("https://sunlightlabs.github.io/congress/legislators?api_key='(myapikey)") as conn: 
    # dosomething 
+0

vielleicht nicht, dass ich voll dieses Konzept versteht noch recht neu im, zu Python, aber wenn ich den Code youve ich für Zeile eine Vertiefung Fehler gegeben eingeben 4 (die leere Zeile nach wie Conn :) Gibt es zusätzlichen Code, den ich verwenden sollte, um dem zu folgen? Ich möchte nicht, dass Sie mein Programm für mich schreiben, aber alle Ressourcen würden sehr geschätzt werden. oder Gen. info –

+1

@ BradleyD.Freeman-Bain: Sie können keine 'with'-Anweisung ohne den folgenden Block haben. Um 'SyntaxError' zu vermeiden, fügen Sie einen beliebigen Code hinzu, auch wenn' pass' nicht ausreicht. – jfs

3

In Python 3 Sie, dass diese Art und Weise implementieren können:

import urllib.request 
u = urllib.request.urlopen("xxxx")#The url you want to open 

beachten: Einige IDE können import urllib (Spyder) direkt, während einige Notwendigkeit import urllib.request (PyCharm).

Das ist, weil Sie manchmal die Stücke, die Sie wollen, explizit importieren müssen, so dass das Modul nicht alles laden muss, wenn Sie nur einen kleinen Teil davon möchten.

Hoffe, das wird helfen.

0

ist ein Modul, während urlopen eine Funktion ist. überprüfen Sie diesen Link, es kann Ihnen helfen, Ihre Zweifel zu beseitigen. https://docs.python.org/3.0/library/urllib.request.html

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Link-Only-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. – slfan

1
from urllib.request import urlopen 
from bs4 import BeautifulSoup 

wiki = "https://en.wikipedia.org/wiki/List_of_state_and_union_territory_capitals_in_India" 

page = urlopen(wiki) 
soup = BeautifulSoup(page, "html.parser").encode('UTF-8') 

print (soup) 
+0

hi, wenn Sie Code schreiben, können Sie ihn als Code formatieren, so dass Leerzeichen unverändert bleiben, wie Sie sie eingegeben haben, und die Syntaxhervorhebung ist abgeschlossen. Wählen Sie dazu Ihren Code aus und klicken Sie im Editor auf die geschweiften Klammern oder ziehen Sie den Code mit vier Leerzeichen ein. Das habe ich bei dieser Antwort für dich getan. Es wäre auch schön, wenn Sie ein wenig schreiben könnten, um Ihren Code zu erklären. –