リクエストライブラリサードパーティライブラリ
1. GET / POSTリクエストを送信する
import requests
# 添加headers 和 查询参数 信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
}
url = 'https://www.baidu.com/'
kw = {'wd': '中国'}
response = requests.get(url, headers=headers, params=kw)
print(response)
#查询响应内容
# print(response.text) #返回Unicode格式数据
#
# print(response.content) #返回字节流数据
# print(response.content.decode('utf-8')) #产生乱码时
print(response.url)
print(response.encoding) #响应字符编码
コンテンツとテキストの違いに注意してください。
response.textはUnicode形式でデータを返します
response.contentはバイトストリームデータを返します。文字化けしたコードがある場合、decode()を使用してデコードする必要があります。
2.プロキシエージェント
プロキシIPの使用は、以前のurllibライブラリの紹介で紹介されています。リクエストでのプロキシの原理は同じです。使用の違いは、リクエストライブラリがより簡潔で便利なことです。リクエストメソッドのプロキシ属性に直接プロキシを配置します。はい、次のように:
import requests
url = 'http://httpbin.org/ip'
proxy = {
'http': '123.160.68.74:9999'
}
resp = requests.get(url, proxies=proxy)
print(resp.text)
3.クッキー
応答にcookieが含まれている場合、cookies属性を使用して、戻りcookie値を取得できます。
3.1 Cookieを使用してログインをシミュレートする
import requests
# resp = requests.get('https://www.baidu.com/')
# print(resp.cookies)
# print(resp.cookies.get_dict())
url = 'https://www.zhihu.com/hot'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36',
'cookie': '_zap=9cb16e80-2e5a-442a-ad83-8c4e56151274; d_c0="AHBUkeFrFhGPThKJGfZWuvXPYdeDQlxWqI4=|1586342451"; _xsrf=KGrwON9rdqf1Va6QrWyiLwNOTRoK5SPY; _ga=GA1.2.925220024.1595327992; Hm_lvt_98beee57fd2ef70ccdd5ca52b9740c49=1595327992,1595330061,1595376694; capsion_ticket="2|1:0|10:1599905310|14:capsion_ticket|44:NzhiNDdjZDFjNjBiNDAxOThhNWI3ODQ0MDJhMGQxZGU=|c18f9b858f5a3b1953d240092ab6d1be2fcdd60cb4ca8bdcb531a2161f93fb1b"; z_c0="2|1:0|10:1599905438|4:z_c0|92:Mi4xbkV5a0JRQUFBQUFBY0ZTUjRXc1dFU2NBQUFDRUFsVk5uaXVFWHdEQXZmUFJ5Y0x4WC1ySS1wQ0dYQnl5ZHh3RVhB|29705d2526c129e3642b869de321e6f086c38b17aa2c1285a131192d2de3477b"; tst=h; tshl=; q_c1=1de7075e7f0448aeb62af8961806c2f1|1599916711000|1588725781000; KLBRSID=2177cbf908056c6654e972f5ddc96dc2|1599917151|1599915145'
}
resp = requests.get(url, headers=headers)
print(resp.text)
3.2セッション、共有Cookieの実現
import requests
post_url = 'https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fwww.meishij.net%2F'
post_data = {
'username':'[email protected]',
'password':'wq15290884759.'
}
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}
# 登录
session = requests.session()
session.post(post_url,headers=headers,data=post_data)
#访问个人网页
url = 'https://i.meishi.cc/cook.php?id=13686422'
resp = session.get(url)
print(resp.text)
4.信頼されていないSSL証明書の取り扱い
4.1 SSL証明書
SSL証明書は、デジタル証明書の一種で、運転免許証、パスポート、営業許可証の電子コピーに似ています。サーバーで構成されているため、SSLサーバー証明書とも呼ばれます。
SSL証明書は、サーバーID検証とデータ転送暗号化機能を使用してサーバーのIDを検証した後、信頼できるデジタル認証局CAによって発行されたSSLプロトコルに準拠します。
https://baike.baidu.com/item/SSL%E8%AF%81%E4%B9%A6/5201468?fr=aladdin
SSL要求が信頼されていない場合は、次の要求エラーなどのエラーが発生します。
import requests
url = 'https://inv-veri.chinatax.gov.cn/'
resp = requests.get(url)
print(resp.text)
したがって、このシチュエーションの検証属性値を追加した後は、通常どおりアクセスできます。
import requests
url = 'https://inv-veri.chinatax.gov.cn/'
resp = requests.get(url, verify=False)
print(resp.text)