Obtenir des données à partir d'une URL en Python
Une URL ou un Uniform Resource Locator est une adresse Web valide et unique qui pointe vers une ressource sur Internet. Cette ressource peut être un simple fichier texte, un fichier zip, un fichier exe
, une vidéo, une image ou une page Web.
Dans le cas d’une page Web, le contenu HTML ou Hypertext Markup Language est récupéré. Cet article montrera comment obtenir ces données HTML ou Hypertext Markup Language à partir d’une URL à l’aide de Python.
Obtenir des données à partir d’une URL à l’aide du module requests
en Python
Python possède un module requests
qui envoie facilement des requêtes HTTP (Hypertext Transfer Protocol). Ce module peut être utilisé pour récupérer le contenu HTML ou tout contenu à partir d’une URL valide.
Le module requests
a une méthode get()
que nous pouvons utiliser pour récupérer des données à partir d’une URL. Cette méthode accepte une url
comme argument et retourne un objet requests.Response
.
Cet objet requests.Response
contient des détails sur la réponse du serveur à la requête HTTP envoyée. Si une URL invalide est passée à cette méthode get()
, la méthode get()
lèvera une exception ConnectionError
.
Si vous n’êtes pas sûr de la validité de l’URL, il est fortement recommandé d’utiliser les blocs try
et except
. Entourez simplement l’appel de la méthode get()
dans un bloc try
et except
. Ceci sera illustré dans l’exemple à venir.
Voyons maintenant comment utiliser cette fonction pour récupérer du contenu HTML ou des données à partir d’une URL valide. Reportez-vous au code suivant pour la même chose.
Pour en savoir plus sur l’objet requests.Response
, reportez-vous à la documentation officielle ici.
import requests
try:
url = "https://www.lipsum.com/feed/html"
r = requests.get(url)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the GET request to the specified URL"
)
Production :
HTML:
...
Notez que ...
représente le contenu HTML qui a été récupéré à partir de l’URL. Le contenu HTML n’a pas été affiché dans la sortie ci-dessus car il était trop volumineux.
Si l’URL est défectueuse, le code ci-dessus exécutera le code à l’intérieur du bloc except
. Le code suivant décrit son fonctionnement.
import requests
try:
url = "https://www.thisisafaultyurl.com/faulty/url/"
r = requests.get(url)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the GET request to the specified URL"
)
Production :
Invalid URL or some error occurred while making the GET request to the specified URL
Certaines pages Web ne permettent pas aux requêtes GET
de récupérer leur contenu pour des raisons de sécurité. Dans de tels cas, nous pouvons utiliser la méthode post()
du module requests
.
Comme son nom l’indique, cette méthode envoie des requêtes POST
à une URL valide. Cette méthode accepte deux arguments, à savoir url
et data
.
L’url
est l’URL cible et les data
accepte un dictionnaire de détails d’en-tête sous forme de paires clé-valeur. Les détails de l’en-tête peuvent être une clé d’API ou d’interface de programmation d’application, un jeton CSRF ou Cross-Site Request Forgery, etc.
Le code Python pour un tel cas serait le suivant.
import requests
try:
url = "https://www.thisisaurl.com/that/accepts/post/requests/"
payload = {
"api-key": "my-api-key",
# more key-value pairs
}
r = requests.post(url, data=payload)
print("HTML:\n", r.text)
except:
print(
"Invalid URL or some error occured while making the POST request to the specified URL"
)