2010-01-07 6 views

Répondre

42

urllib.request est probablement à l'aide de la meilleure façon de le faire:

import urllib.request 
f = urllib.request.urlopen("http://stackoverflow.com") 
print(f.read()) 
+0

Essayé cela et j'ai "AttributeError: 'module' objet n'a pas d'attribut 'urlopen'" – BiscottiGummyBears

+1

En fait, le module correct à importer est urllib2. –

+1

Désolé, je viens de remarquer que vous utilisiez Python 3. J'ai mis à jour mon exemple pour correspondre. –

0

Ajouter ce code qui peut formater des données pour la lecture humaine:

text = f.read().decode('utf-8') 
2

Vous pouvez également utiliser la bibliothèque de demandes. J'ai trouvé cela particulièrement utile parce qu'il était plus facile de récupérer et d'afficher l'en-tête HTTP.

import requests 

source = 'http://www.pythonlearn.com/code/intro-short.txt' 

r = requests.get(source) 

print('Display actual page\n') 
for line in r: 
    print (line.strip()) 

print('\nDisplay all headers\n') 
print(r.headers) 
+0

Est-ce Python 3? –

+0

Cela fonctionnera-t-il pour Python 3? –

2

Module intégré Utilisation "http.client"

import http.client 

connection = http.client.HTTPSConnection("api.bitbucket.org", timeout=2) 
connection.request('GET', '/2.0/repositories') 
response = connection.getresponse() 
print('{} {} - a response on a GET request by using "http.client"'.format(response.status, response.reason)) 
content = response.read().decode('utf-8') 
print(content[:100], '...') 

Résultat:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

utilisation de la bibliothèque tiers "demandes"

response = requests.get("https://api.bitbucket.org/2.0/repositories") 
print('{} {} - a response on a GET request by using "requests"'.format(response.status_code, response.reason)) 
content = response.content.decode('utf-8') 
print(content[:100], '...') 

Résultat:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Module intégré Utilisation "urllib.request"

response = urllib.request.urlopen("https://api.bitbucket.org/2.0/repositories") 
print('{} {} - a response on a GET request by using "urllib.request"'.format(response.status, response.reason)) 
content = response.read().decode('utf-8') 
print(content[:100], '...') 

Résultat:

200 OK - a response on a GET request by using "http.client" {"pagelen": 10, "values": [{"scm": "hg", "website": "", "has_wiki": true, "name": "tweakmsg", "links ...

Notes:

  1. Python 3.4
  2. Résultat des réponses les plus sera probablement différent que le contenu
0

https://stackoverflow.com/a/41862742/8501970 Check this out à la place. C'est à peu près le même problème que vous avez et celui-ci est très simple et très peu de lignes de codes. Cela m'a vraiment aidé quand j'ai réalisé que python3 ne pouvait pas simplement utiliser get_page.

Ceci est une bonne alternative.