リクエスト モジュール----これは難しいメソッドですが、どれほど強力ですか? 見てみるだけでわかります。

目次

リクエストの役割

単純な取得リクエストを送信する

ヘッダー付きのリクエストを送信する

POSTリクエストを送信する

Cookieパラメータの使用

Cookieとセッションの違い

プロキシを使う

リクエストのタイムアウトを設定する

SSL証明書をリクエストする

_____________________________________________________

                                                どうぞ

リクエストモジュールの簡単な紹介

1.リクエスト モジュールは、クローラーで最も一般的に使用されるモジュールであり、クローラーによってすぐに受け入れられるモジュールです。

たぶん、これまでいくつかのチュートリアルを見たことがある小さなかわい子ちゃんは、urllib から始めてみてはどうだろうかと考えているかもしれません。
リクエストモジュールは次の理由で開始されます。
1. リクエストの基礎となる実装は urllib です。
2.リクエストはPython2とPython3で共通で、方法は全く同じです
3.リクエストは使いやすい

ウェブへのアクセスを簡単に振り返る

 サーバーにリクエストを送信すると、サーバーはデータで応答し、リクエストを送信するブラウザをシミュレートします。

単純に理解すると、ネットワークリクエストを送信し、対応するデータを返します。

リクエストを使用する前に、私の考えを図の形で表現します。

さて、私たちは何かをしなければなりません。まずそれを行う方法を知る必要があります。その最初のステップは次のとおりです。

ダウンロードモジュールリクエスト:

単純な取得リクエストを送信する

 簡単なコードを始めましょう:

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とセッションの違い

Cookie データはクライアントのブラウザに保存され、セッション データはサーバーに保存されます。
Cookie はあまり安全ではありません。ローカルに保存されている Cookie を他の人が分析して騙す可能性があります。
セッションはサーバー上に一定期間保存されます。訪問数が増えると、サービスの負担が大きくなります
デバイスのパフォーマンス
1 つの Cookie によって保存されるデータは 4K を超えることはできず、多くのブラウザではサイトが保存できるデータ量が最大で制限されています
クッキー20枚

プロキシを使う

1. サーバーに同じクライアントが要求していないと思わせる
2. 本当の住所の漏洩と責任の追及を防ぐ

プロキシ IP は 3 つのカテゴリに分類できます

1. 透過プロキシ (プロキシ IP を使用していることがわかっているため、ni を見つけることができます)
2. 匿名プロキシ (プロキシ IP を使用していることはわかっていますが、見つかりません)
3. 匿名性の高いプロキシ (あなたがプロキシ 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)

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証明書をリクエストする

を使用している場合、特定の Web サイトにアクセスすると、この状況が発生する可能性があります。
リクエストモジュールがリクエストしても、Web サイトの CA 証明書が存在しないため、結果は取得されません。
[信頼されたルート認証局]による認証済み
方法:
リクエストでリクエストするときにパラメータを追加します
検証=偽
response = requests.get('https://inv-veri.xxxx.gov.cn/',verify=False)

概要:

リクエスト モジュールはブラウザをシミュレートして Web ページにアクセスできますが、一部の動的な Web ページでは機能しません。上記は私の個人的な共有状況です。

추천

출처blog.csdn.net/m0_69984273/article/details/130896941