web-dev-qa-db-fra.com

Python 3 Obtenir la page HTTP

Comment puis-je obtenir python pour obtenir le contenu d'une page HTTP? Jusqu'à présent, tout ce que j'ai, c'est la demande et j'ai importé http.client.

27
BiscottiGummyBears

Utiliser urllib.request est probablement le moyen le plus simple de procéder:

import urllib.request
f = urllib.request.urlopen("http://stackoverflow.com")
print(f.read())
48
Greg Hewgill

Module intégré d'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 - une réponse à une demande GET en utilisant "http.client" {"page": 10, "valeurs": [{"scm": "hg", "site web": "", "has_wiki": true, "name": "tweakmsg", "links ...

Utilisation de la bibliothèque tierce "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 - une réponse à une demande GET en utilisant "http.client" {"page": 10, "valeurs": [{"scm": "hg", "site web": "", "has_wiki": true, "name": "tweakmsg", "links ...

Module intégré d'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 - une réponse à une demande GET en utilisant "http.client" {"page": 10, "valeurs": [{"scm": "hg", "site web": "", "has_wiki": true, "name": "tweakmsg", "links ...

Remarques:

  1. Python 3.4
  2. Résultat des réponses les plus probables seront différer uniquement le contenu
7
Seti Volkylany

Vous pouvez également utiliser la bibliothèque de demandes. J'ai trouvé cela particulièrement utile car 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)
1
dimsum88

https://stackoverflow.com/a/41862742/8501970 Cochez plutôt cette option. 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 certainement aidé lorsque j'ai réalisé que python3 ne pouvait pas utiliser simplement get_page.

C’est une bonne alternative ..__ (espère que cela aide, bravo!)

0
chandra singh

demandes d'installation de pip

import requests

r = requests.get('https://api.spotify.com/v1/search?type=artist&q=beyonce')
r.json()
0
Anthony Awuley

Ajoutez ce code qui peut formater les données pour une lecture humaine:

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