ホームページ  >  記事  >  バックエンド開発  >  Python を使用してネットワーク リソースをリクエストする方法

Python を使用してネットワーク リソースをリクエストする方法

WBOY
WBOY転載
2023-04-13 12:22:051928ブラウズ

Python を使用してネットワーク リソースをリクエストする方法

私たちは長い間 Linux システムに関する知識を共有しているため、友人の中には Linux の操作に関することだけを共有していると誤解している人もいるかもしれませんが、実際にはそうではありません。私たちは日々の生活の中で開発を行っていますが、その過程で遭遇する問題点のいくつかは、要約できると思います。

最近、ネットワーク リソースに定期的にアクセスするためのプログラムを作成しています。これには、Python を使用してネットワークにアクセスする必要があるため、今日はこの点について簡単にまとめます。

Python を使用してネットワーク リソースにアクセスする

ネットワーク上のリソースにアクセスするには、友人の中には urllib.request を使用する場合があります。このモジュールは Python 標準ライブラリでもあります。ただし、urllib.request のラッパーであり、より使いやすい request を使用します。初めて使用する場合は、リクエストをインストールする必要があります。インストールには pip を使用します:

pip install --user requests

インストールが成功したら、直接使用できます。使用する場合は、 Python ファイル:

import requestsimport requests

デモンストレーションの便宜上、リクエスト モジュールを使用して、github で最高の星評価を持つ Python プロジェクトにアクセスします。アドレスは:

https ://www.php.cn/link/62d90d223cf3e2239113a4963b191d71

全体を理解するには、まずブラウザを使用してこのアドレスを開いて、内部のコンテンツを確認します。 json形式で表示されるテキストです。

次に、新しい test-resp.py ファイルを作成し、次のコードを入力します。

import requests
url='​​https://www.php.cn/link/62d90d223cf3e2239113a4963b191d71​​';
get_resp=requests.get(url);

上記のコードの最初の行では、リクエストが導入されています。モジュールの2行目でurl変数にアクセス先のアドレスを格納し、3行目でrequestsモジュールのgetメソッドを使用してURLにアクセスし、その応答を変数get_respに格納しています。応答は、要求されたリソースのコンテンツとステータスを含むオブジェクトです。 status_code オブジェクト、次のコードを使用して、応答のステータスを出力できます。

print(get_resp.status_code)

結果は次のとおりです。

$ python ​​test-resp.py​​
200

もちろん、テキストを出力することもできます。応答、つまり print get_resp.text ですが、次の図に示すように、テキストは書式設定されておらず、読みにくくなっています。

上の図では、結果の一部のみをインターセプトしました。長すぎます... この結果は解析するのがさらに面倒ですが、中身を見るだけで json 形式であることがわかりますので、応答結果も json になります, そして Python の json 解析関数は非常に強力です。この json のキー値を次のように出力できます:

print(get_resp.json().keys())

結果は次のとおりです:

$ python ​​test-resp.py​​
dict_keys(['total_count', 'incomplete_results', 'items'])

上記の結果では、この応答結果を完全に json オブジェクトとして扱うことができます。たとえば、上記の結果の最初の keyi 値 total_count は、Python ウェアハウスの総数を表します。この値は次のように出力できます:

response_dict=get_resp.json();
print("Total repositories:", response_dict['total_count'])

実行結果は次のとおりです:

$ python ​​test-resp.py​​
Total repositories: 9128125

If読み取られるネットワーク リソースは通常の HTML 形式であるため、HTML 解析を完全に解決できるサードパーティ ライブラリ BeautifulSoup を使用できます。以前の記事でも BeautifulSoup について紹介しましたので、以下を参照してください: Python の Beautiful Soup ライブラリを使用して Web ページを分析する

リクエスト ヘッダー情報を追加する

一部のネットワーク リソースはリクエストに応答する可能性があります制限があります。ロボット (プログラム) がアクセスできないようにする、またはアクセスするために (ユーザー セッションを使用した) ログインを要求するなど、この目的のために、リクエストにリクエスト ヘッダーを追加したり、リクエスト ヘッダーでブラウザをシミュレートしたり、ユーザー セッション情報 (トークン) を追加したりすることができます。 )など。以下に示すように:

headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
'Authorization':'41d15146-c3f3-4c0b-b48b-b5210151a9df'
}
get_resp=requests.get(url,headers=headers,params=None)

上記のコードでは、ヘッダー オブジェクトの User-Agent がシミュレートされたブラウザー情報であり、Authorization がリクエスト トークンです。以下に示すように、必要に応じて他のリクエスト ヘッダー情報を追加することもできます:

header={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.235'
}

Others

上記で使用した例はすべて get リクエストを処理しています。同じことは、リクエストを使用して post リクエストにも当てはまります。 post メソッドは次のとおりです。

post_resp=requests.post(url,headers=headers,data=None,json=None)

使用方法は get リクエストとまったく同じです。

上記が今回共有するすべての内容です。議論を歓迎します。

以上がPython を使用してネットワーク リソースをリクエストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。