3 Les demandes de demandes de réseau

3, les demandes réseau Requests-

Les demandes sont le langage écrit en Python à base urllib
démonstration fonctionnelle globale

import requests

response  = requests.get("https://www.baidu.com")
print(type(response))     <class 'requests.models.Response'>
print(response.status_code)
print(type(response.text))
print(response.text)  字符串
print(response.cookies)
print(response.content) 二进制
print(response.content.decode("utf-8"))  字符串

Note: Le
site Web directement response.text brouillées en cas de problème, l' utilisation response.content format de données renvoyées est un format binaire, puis decode () converti en utf-8, résolus par response.text directement de problème de dos tronqués.

Une fois la demande faite, les demandes fera une supposition basée sur l'en-tête de réponse HTTP encodée. Lorsque vous visitez le response.text, demandes utilisera son encodage de texte présumé. Vous pouvez savoir quel encodage Les demandes d'utilisation, et peut utiliser la propriété response.encoding pour le changer.

response =requests.get("http://www.baidu.com")
response.encoding="utf-8"
print(response.text)

Que ce soit par response.content.decode ( « utf-8) ou par response.encoding = » utf-8 « problèmes tronqués de mode peut être évité

le codage de détection automatique

pip  install chardet
response =requests.get("http://www.baidu.com")
response.encoding=chardet.detect(response.content)['encoding']    直接获取全部响应
print(response.text)

另外一种流模式
response =requests.get("http://www.baidu.com", stream=True)
response.raw.read(10

méthode de requête

import requests
requests.post("http://httpbin.org/post")
requests.put("http://httpbin.org/put")
requests.delete("http://httpbin.org/delete")
requests.head("http://httpbin.org/get")
requests.options("http://httpbin.org/get")

1. Procédé demande
demande GET avec des paramètres

import requests

response = requests.get("http://httpbin.org/get?name=zhaofan&age=23")
print(response.text)

2, dans la chaîne de requête d'URL pour transmettre des données
nous serait généralement passer par voie httpbin.org/get?key=val. Les demandes module permet les params mot - clé passer des paramètres à transmettre ces paramètres à un dictionnaire

import requests
data = {
    "name":"zhaofan",
    "age":22
}
response = requests.get("http://httpbin.org/get",params=data)
print(response.url)
print(response.text)

Parse Json

import requests
import json

response = requests.get("http://httpbin.org/get")
print(type(response.text))
print(response.json())
print(json.loads(response.text))
print(type(response.json()))

tête Ajouter

import requests
headers = {

    "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
}
response =requests.get("https://www.zhihu.com",headers=headers)

print(response.text)

demande POST de base

import requests

data = {
    "name":"zhaofan",
    "age":23
}
response = requests.post("http://httpbin.org/post",data=data)
print(response.text)

réponse

import requests

response = requests.get("http://www.baidu.com")
print(type(response.status_code),response.status_code)
print(type(response.headers),response.headers)      response.headers.get('content-type')
print(type(response.cookies),response.cookies)
print(type(response.url),response.url)
print(type(response.history),response.history)   

Code du Statut

100: ( 'continuer',),
101 ( 'switching_protocols',),
102: ( 'traitement',),
103 ( 'checkpoint'),
122 ( 'uri_too_long', 'request_uri_too_long'),
200: ( 'ok', 'ok', 'all_ok', 'all_okay', 'all_good', '\ o /', '✓'),
201: ( 'créé',),
202: ( 'accepté',),
203: ( 'non_authoritative_info', 'non_authoritative_information'),
204 ( 'no_content',),
205 ( 'reset_content', 'reset'),
206 ( 'partial_content', 'partielle'),
207 ( 'multi_status ' 'multiple_status', '', 'multi_stati multiple_stati'),
208 ('already_reported »,),
226 ( 'im_used',),

Redirection.
300: ( 'multiple_choices',),
301: ( 'moved_permanently', 'déplacé', '\ o-'),
302 ( 'trouvé',),
303: ( 'see_other', 'autre'),
304: ( 'not_modified',),
305 ( 'use_proxy',),
306 ( 'switch_proxy',),
307 ( 'temporary_redirect', 'temporary_moved', 'temporaire'),
308 ( 'permanent_redirect',
« resume_incomplete », 'CV',), # Ces 2 à supprimer dans la version 3.0

Erreur client.
400: ( 'bad_request', 'mauvais'),
401: ( 'non autorisés',),
402: ( 'payment_required', 'paiement'),
403: ( 'interdit',),
404: ( 'not_found', ' -o- '),
405 (' method_not_allowed », 'not_allowed'),
406 ( 'not_acceptable',),
407 ( 'proxy_authentication_required', 'proxy_auth', 'proxy_authentication'),
408 ( 'request_timeout', temporisation),
409 ( 'conflit',),
410 ( 'gone',),
411 ( 'length_required',),
412 ( 'precondition_failed', 'condition'),
413 ( 'request_entity_too_large' ,),
414 ( »

416: ( 'requested_range_not_satisfiable', 'requested_range', 'range_not_satisfiable'),
417: ( 'expectation_failed',),
418: ( 'im_a_teapot', 'théière', 'i_am_a_teapot'),
421: ( 'misdirected_request',),
422: ( 'unprocessable_entity', 'non traitable'),
423 ( 'verrouillé',),
424 ( 'failed_dependency', 'dépendance'),
425 ( 'unordered_collection', 'non ordonnée),
426 (' upgrade_required », 'mise à jour'),
428 ( 'precondition_required', 'condition'),
429 ( 'too_many_requests', 'too_many'),
431 ( 'header_fields_too_large', 'fields_too_large'),
444:( 'no_response', 'none'),
449 ( 'retry_with', 'nouvelle tentative'),
450 ( 'blocked_by_windows_parental_controls', 'parental_controls'),
451: ( 'unavailable_for_legal_reasons', 'legal_reasons'),
499 ( 'client_closed_request',),

Erreur du serveur.
500: ( 'internal_server_error', 'server_error', '/ o', '✗'),
501 ( 'not_implemented',),
502 ( 'bad_gateway',),
503 ( 'SERVICE_UNAVAILABLE', 'indisponible') ,
504 ( 'gateway_timeout',),
505 ( 'http_version_not_supported', 'http_version'),
506 ( 'variant_also_negotiates',),
507 ( 'insufficient_storage',),
509 ( 'bandwidth_limit_exceeded', 'bande passante' ),
510 ( 'not_extended',),
511 ( 'network_authentication_required', 'network_auth', 'network_authentication')

Exemples

import requests

response= requests.get("http://www.baidu.com")
if response.status_code == requests.codes.ok:
    print("访问成功")

Obtenez les cookies

import requests

response = requests.get("http://www.baidu.com")
print(response.cookies)

for key,value in response.cookies.items():
    print(key+"="+value)
    
    
##
for cookie in response.cookie.keys()
    print(response.cookies.get(cookie))
    
##自定义cookie
cookies = dict(name='qiye', age='10')
response = requests.get("http://www.baidu.com",cookies=cookies)

Les restes de session

import requests
s = requests.Session()
s.get("http://httpbin.org/cookies/set/number/123456")
response = s.get("http://httpbin.org/cookies")
print(response.text)

datas={'name':'hhh', 'password':'xxxx'}
r=s.post(url,data=datas)

certificat de validation

import requests
from requests.packages import urllib3
urllib3.disable_warnings()
response = requests.get("https://www.12306.cn",verify=False)
print(response.status_code)

Paramètres du proxy

import requests

proxies= {
    "http":"http://127.0.0.1:9999",
    "https":"http://127.0.0.1:8888"
}
response  = requests.get("https://www.baidu.com",proxies=proxies)
print(response.text)
#### 或通过环境变量配置
HTTP_PROXY   HTTPS_PROXY 


##设置账号和密码
proxies = {
"http":"http://user:[email protected]:9999"
}

## 通过sokces
## pip install "requests[socks]"
proxies= {
"http":"socks5://127.0.0.1:9999",
"https":"sockes5://127.0.0.1:8888"
}

Paramètres du délai

Vous pouvez être fourni par un délai d'attente de paramètre de délai d'attente

r= request.get(url,timeout=2)

Authentifier

Les sites qui nécessitent une authentification peuvent être atteints par le module requests.auth

import requests

from requests.auth import HTTPBasicAuth

response = requests.get("http://120.27.34.24:9001/",auth=HTTPBasicAuth("user","123"))
print(response.status_code)



##另一种方式
import requests

response = requests.get("http://120.27.34.24:9001/",auth=("user","123"))
print(response.status_code)

Gestion des exceptions

Anormaux reqeusts sur ici vous pouvez voir les détails:
http://www.python-requests.org/en/master/api/#exceptions toutes les exceptions sont dans les requests.excepitons

On peut voir de la source RequestException Hériter IOError,
HTTPError, ConnectionError, délai d' attente héritage RequestionException
ProxyError, SSLError héritage ConnectionError
ReadTimeout hérité délai d' attente anormale

Attrapez l'ordre d'exception

import requests

from requests.exceptions import ReadTimeout,ConnectionError,RequestException


try:
    response = requests.get("http://httpbin.org/get",timout=0.1)
    print(response.status_code)
except ReadTimeout:
    print("timeout")
except ConnectionError:
    print("connection Error")
except RequestException:
    print("error")

délai d'attente est d'abord capturé anomalie, lorsque le réseau sera brisé ConnectionError capture courrier, si les exceptions ne sont pas pris plus tôt, le dernier peut être capturé aussi par RequestExctption

Je suppose que tu aimes

Origine www.cnblogs.com/g2thend/p/12452178.html
conseillé
Classement