目次
リクエストの役割
単純な取得リクエストを送信する
ヘッダー付きのリクエストを送信する
POSTリクエストを送信する
Cookieパラメータの使用
Cookieとセッションの違い
プロキシを使う
リクエストのタイムアウトを設定する
SSL証明書をリクエストする
_____________________________________________________
どうぞ
リクエストモジュールの簡単な紹介
1.リクエスト モジュールは、クローラーで最も一般的に使用されるモジュールであり、クローラーによってすぐに受け入れられるモジュールです。
ウェブへのアクセスを簡単に振り返る
サーバーにリクエストを送信すると、サーバーはデータで応答し、リクエストを送信するブラウザをシミュレートします。
単純に理解すると、ネットワークリクエストを送信し、対応するデータを返します。
リクエストを使用する前に、私の考えを図の形で表現します。
さて、私たちは何かをしなければなりません。まずそれを行う方法を知る必要があります。その最初のステップは次のとおりです。
ダウンロードモジュールリクエスト:
単純な取得リクエストを送信する
簡単なコードを始めましょう:
url=" https://www.baidu.com/?tn=02003390_19_hao_pg "
import requests
url="https://www.baidu.com/?tn=02003390_19_hao_pg"
header={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
}
# 发送请求
response=requests.get(url)
print(response)
response.encoding="utf-8"
print(response.text)
エンコーディングとは、返されるデータのエンコーディング形式を、受け入れられたデータのエンコーディング形式と一致するように設計することです。
text は、サーバーから文字列として返されるデータの html タイプです。
データを取得するコンテンツ json()もあります
応答ステータスコードを返す
部分的なリクエストヘッダーを返す
すべてのリクエストヘッダーを返す
コンテンツ取得データ(バイトデータを返す)
content.decode() は text と等価で、戻り値の型は文字列です。
バイトを文字列に変換する
json()は、json データを Python データ型に変換します。
次のコードは次のとおりです。
import requests
url="https://www.woaifanyi.com/api/2.0/save/?ajaxtimestamp=1685158773961"
header={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
}
data={
"source": "你好",
"from": "1",
"to": "2"
}
# 发送请求
response=requests.post(url,data=data,headers=header)
print(response)
print(response.json())
print(response.request.headers)
ここでは Post() が使用されています。これは get() とほぼ同じですが、唯一の違いはデータ パラメーターです。
レスポンスに対応する リクエストヘッダを返す
応答.リクエスト.ヘッダー
すべての応答ヘッダーを返します
ヘッダー
ヘッダー付きのリクエストを送信する
上記で返されたデータは部分的な HTML データであることがわかりますが、実際にはこれよりもはるかに多くのデータです。
このような状況を防ぐために、リクエストヘッダーを追加できます。
import requests
url="https://www.baidu.com/?tn=02003390_19_hao_pg"
header={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
}
# 发送请求
response=requests.get(url,headers=header)
print(response)
response.encoding="utf-8"
print(response.text)
このようにするとページ全体のデータは取得できますが、取得できるのは静的ページのデータのみであり、動的データとしてこれに頼るのは困難です(動的ページのデータの取得方法は後ほど投稿します) )
POSTリクエストを送信する
json() の前で、post() を使用してデモンストレーションしました。
ここで過ごす時間はありません
Cookieパラメータの使用
Cookie は QQ にログインするときと同じようにユーザー情報として認識されます。QQ ソフトウェアには Cookie 情報が含まれているため、しばらく手動でログインすることはできません。
用途: ヘッダーに追加して一緒に送信できます
コードは以下のように表示されます。
一部のかわい子ちゃんは Cookie を書くのが難しいと感じるかもしれませんが、この Web サイトがそれを解決します ( https://spidertools.cn/#/formatHeader )
import requests
url="http://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=0d2d6b4f80839676"
header={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
"cookie":"XXXXXXXXXXX"
}
# 发送请求
response=requests.get(url,headers=header)
print(response)
response.encoding="utf-8"
# print(response.text)
# print(response.content.decode())
# print(response.status_code)
# print(response.json())
Cookieとセッションの違い
プロキシを使う
プロキシ IP は 3 つのカテゴリに分類できます
import requests
url="http://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=0d2d6b4f80839676"
header={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
"cookie":"XXXXXXXXXXX"
}
proxies={
"http":"http://117.191.11.112",
"https":"http://117.191.11.112"
}
# 发送请求
response=requests.get(url,headers=header,proxies=proxies)
print(response)
response.encoding="utf-8"
プロキシ IP に障害が発生すると、エラーが報告されます。
リクエストの際、プロキシIPのリクエスト時間が長すぎるので、可愛く書くと煩わしいので、最大どれくらい待つかを
リクエストのタイムアウトを設定する
import requests
url="http://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_web_fanyi&sign=0d2d6b4f80839676"
header={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
"cookie":"XXXXXXXXXXX"
}
proxies={
"http":"http://117.191.11.112",
"https":"http://117.191.11.112"
}
# 发送请求
response=requests.get(url,headers=header,proxies=proxies,timeout=10)
print(response)
response.encoding="utf-8"
timeout=10 は最大 10 秒待つことを意味します !!! 10 秒待つことは強制されません
SSL証明書をリクエストする
response = requests.get('https://inv-veri.xxxx.gov.cn/',verify=False)