Python学習のRequest

2595 ワード

概要
この文章は続きです.https://blog.csdn.net/GoSaint/article/details/100902655 .主に別のリクエスト方式を紹介します.Request.urlopen()メソッドはパラメータが限られており,我々のすべてのニーズを満たすことができないため,Requestが適用されて生まれた.
Request
import urllib.request


request=urllib.request.Request('https://python.org')
response=urllib.request.urlopen(request)
print(response.read().decode('UTF-8'))

上記のコードはurlopen()メソッドを使用していますが、渡されるパラメータはurlアドレスではなくrequestオブジェクトです.class Requestを見てください
"""
class Request:(url, data=None, headers={},
               origin_req_host=None, unverifiable=False,method=None):
"""

url
要求されたURL
data
byteタイプは、一般的に解析が必要で、parseを使用します.urlencode符号化
headers
要求ヘッダ、辞書タイプ
origin_req_host

リクエストされたhost名またはIPアドレス
unverifiable
この要求が検証できないかどうかを示すデフォルトはFalseです.つまり、ユーザーはこの要求を受信する結果を選択するのに十分な権限がありません.例えば、HTMLドキュメントの画像を要求しますが、画像をキャプチャする権限がありません.この場合、unverifiableの値はTrueです.
method
要求タイプPOST GET PUT
要求サンプルプログラム:
import urllib.request
import urllib.parse

url='http://httpbin.org/post'
dict={'name':'Germy'}
headers={
    'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
    'Host':'httpbin.org'
}
data=bytes(urllib.parse.urlencode(dict),'UTF-8')
req=urllib.request.Request(url=url,data=data,headers=headers,method='POST')
response=urllib.request.urlopen(req)
print(response.read().decode('UTF-8'))

結果を返します.
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "name": "Germy"
  }, 
  "headers": {
    "Accept-Encoding": "identity", 
    "Content-Length": "10", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
  }, 
  "json": null, 
  "origin": "117.176.186.251, 117.176.186.251", 
  "url": "https://httpbin.org/post"
}
req=urllib.request.Request(url=url,data=data,method='POST')
req.add_header('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36')

add_を使用することもできますヘッダがリクエストヘッダを追加します.