Maison  >  Article  >  développement back-end  >  Bases de l'utilisation de la bibliothèque urllib.request

Bases de l'utilisation de la bibliothèque urllib.request

巴扎黑
巴扎黑original
2017-07-18 13:50:492932parcourir

Ce que l'on appelle l'exploration de pages Web consiste à lire les ressources réseau spécifiées dans l'adresse URL à partir du flux réseau et à les enregistrer localement. Il existe de nombreuses bibliothèques en Python qui peuvent être utilisées pour explorer des pages Web. Apprenons d'abord urllib.request. (urllib2 dans python2.x)

urlopen

Nous lisons d'abord le code suivant : Ouvrez la page d'accueil de Baidu sur votre ordinateur, faites un clic droit et sélectionnez "Afficher le code source". le résultat de sortie est exactement le même que lorsque nous exécutons le programme ci-dessus. En d'autres termes, les quelques lignes de code ci-dessus nous ont aidé à parcourir tout le code de la page d'accueil de Baidu.

Reuqest
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

# 导入urllib.request库
import urllib.request

# 向指定的url发送请求,并返回服务器响应的类文件对象
response = urllib.request.urlopen("http://www.baidu.com/")

# 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串
html = response.read()

# 打印字符串
print(html)
Dans l'exemple ci-dessus, le paramètre de urlopen() est une adresse url.

Mais si vous devez effectuer des opérations plus complexes, telles que l'ajout d'en-têtes HTTP, vous devez créer une instance de requête en tant que paramètre de urlopen(), et l'adresse URL à laquelle il faut accéder en tant que paramètre du Instance de requête.

Les résultats d'exécution sont exactement les mêmes :

En plus du paramètre url, l'instance de requête nouvellement créée peut également définir deux autres paramètres :
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

# 导入urllib.request库
import urllib.request

# url 作为Request()方法的参数,构造并返回一个Request对象
request = urllib.request.Request("http://www.baidu.com/")

# 向服务器发送这个请求
response = urllib.request.urlopen(request)

html = response.read()

print(html)
1.data (vide par défaut) : ce sont les données soumises avec l'URL (telles que les données de publication), et la requête HTTP sera modifiée de "GET" à "POST".

2.headers (vide par défaut) : est un dictionnaire contenant des paires clé-valeur d'en-têtes HTTP qui doivent être envoyées.

User-Agent

Si nous voulons que notre programme d'exploration ressemble davantage à un vrai utilisateur, alors notre première étape consiste à prétendre être un navigateur reconnu. Différents navigateurs auront des en-têtes User-Agent différents lors de l'envoi de requêtes. L'en-tête User-Agent par défaut de urllib.request est : Python-urllib/x.y (x et y sont les numéros de version majeure et mineure de Python, tels que Python-urllib/3.5)

Ajouter plus d'informations sur l'en-tête

Ajoutez des en-têtes spécifiques à la requête HTTP pour construire un message de requête HTTP complet.
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

# 导入urllib.request库
import urllib.request

# chrome 的 User-Agent,包含在 header里
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}

# url 连同 headers,一起构造Request请求,这个请求将附带 chrome 浏览器的User-Agent
request = urllib.request.Request("http://www.baidu.com/", headers = header)

# 向服务器发送这个请求
response = urllib.request.urlopen(request)

html = response.read()

print(html)

Ajouter un en-tête spécifique

可以通过调用Request.add_header() 添加/修改一个特定的header
也可以通过调用Request.get_header()来查看已有的header。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn