urllib2 est un module fourni avec Python2.7 (pas besoin de télécharger, il suffit de l'importer et de l'utiliser).
Utilisation de base de la bibliothèque urllib2
L'exploration dite de page 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 urllib2.
urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用) urllib2 官方文档:https://docs.python.org/2/library/urllib2.html urllib2 源码:https://hg.python.org/cpython/file/2.7/Lib/urllib2.py
urllib2 a été remplacé par urllib.request
urlopen
Commençons par un morceau de code :
# urllib2_urlopen.py # 导入urllib2 库 import urllib2 # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib2.urlopen("http://www.baidu.com") # 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串 html = response.read() # 打印字符串 print html
Exécutez le code python écrit et imprimons le résultat
Power@PowerMac ~$: python urllib2_urlopen.py
En fait, si nous ouvrons la page d'accueil de Baidu sur le navigateur, faites un clic droit et sélectionnez "Afficher le code source", vous constaterez que c'est exactement la même chose que ce que nous vient d'être imprimé. En d'autres termes, les 4 lignes de code ci-dessus nous ont aidé à parcourir tout le code de la page d'accueil de Baidu.
Le code python correspondant à une requête d'url basique est vraiment très simple.
Requête
Dans notre premier exemple, le paramètre de urlopen() est une adresse url
Mais si vous devez effectuer des opérations plus complexes ; , comme l'ajout d'en-têtes HTTP, doit créer une instance de Request en tant que paramètre de urlopen(); et l'adresse URL à laquelle il faut accéder est utilisée comme paramètre de l'instance de Request.
Nous éditons urllib2_request.py
# urllib2_request.py import urllib2 # url 作为Request()方法的参数,构造并返回一个Request对象 request = urllib2.Request("http://www.baidu.com") # Request对象作为urlopen()方法的参数,发送给服务器并接收响应 response = urllib2.urlopen(request) html = response.read() print html
Le résultat en cours d'exécution est exactement le même :
新建Request实例,除了必须要有 url 参数之外,还可以设置另外两个参数: data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式。 headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对。 这两个参数下面会说到。
User-Agent
Mais ça C'est simple Utiliser urllib2 pour envoyer une requête à un site Web est en effet un peu abrupt. Tout comme chaque maison a une porte, il n'est évidemment pas très poli de faire irruption en tant que passant. De plus, certains sites n'aiment pas être visités par des programmes (visites non humaines) et peuvent refuser votre demande d'accès.
Mais si nous utilisons une identité légale pour demander les sites Web d'autres personnes, ils l'accepteront évidemment, nous devrions donc ajouter une identité à notre code, qui est ce qu'on appelle l'en-tête User-Agent.
Le navigateur est une identité reconnue et autorisée dans le monde Internet. Si nous voulons que notre programme d'exploration ressemble davantage à un utilisateur réel, 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 urllib2 est : Python-urllib/x.y (x et y sont les numéros de version majeure et mineure de Python, tels que Python-urllib/2.7)
#urllib2_useragent.py import urllib2 url = "http://www.itcast.cn" #IE 9.0 的 User-Agent,包含在 ua_header里 ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} # url 连同 headers,一起构造Request请求,这个请求将附带 IE9.0 浏览器的User-Agent request = urllib2.Request(url, headers = ua_header) # 向服务器发送这个请求 response = urllib2.urlopen(request) html = response.read() print html
Ajouter plus d'informations sur l'en-tête
Ajoutez un en-tête spécifique à la requête HTTP pour construire un message de requête HTTP complet.
Vous pouvez ajouter/modifier un en-tête spécifique en appelant Request.add_header() ou afficher les en-têtes existants en appelant Request.get_header().
Ajouter un en-tête spécifique
# urllib2_headers.py import urllib2 url = "http://www.itcast.cn" #IE 9.0 的 User-Agent header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} request = urllib2.Request(url, headers = header) #也可以通过调用Request.add_header() 添加/修改一个特定的header request.add_header("Connection", "keep-alive") # 也可以通过调用Request.get_header()来查看header信息 # request.get_header(header_name="Connection") response = urllib2.urlopen(req) print response.code #可以查看响应状态码 html = response.read() print html
Ajouter/modifier aléatoirement le User-Agent
# urllib2_add_headers.py import urllib2 import random url = "http://www.itcast.cn" ua_list = [ "Mozilla/5.0 (Windows NT 6.1; ) Apple.... ", "Mozilla/5.0 (X11; CrOS i686 2268.111.0)... ", "Mozilla/5.0 (Macintosh; U; PPC Mac OS X.... ", "Mozilla/5.0 (Macintosh; Intel Mac OS... " ] user_agent = random.choice(ua_list) request = urllib2.Request(url) #也可以通过调用Request.add_header() 添加/修改一个特定的header request.add_header("User-Agent", user_agent) # 第一个字母大写,后面的全部小写 request.get_header("User-agent") response = urllib2.urlopen(req) html = response.read() print html
Recommandations de tutoriel associées : Tutoriel vidéo Python
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!