ホームページ  >  記事  >  バックエンド開発  >  Python Web クローラーリクエストライブラリの使用方法

Python Web クローラーリクエストライブラリの使用方法

WBOY
WBOY転載
2023-05-15 10:34:131195ブラウズ

1. Web クローラーとは

簡単に言うと、インターネットからデータを自動的にダウンロード、解析、整理するプログラムを構築することです。

Web を閲覧するときと同じように、興味のあるコンテンツをコピーしてノートブックに貼り付け、次回の閲覧や閲覧を容易にします。Web クローラーは、これらのコンテンツを自動的に完成させるのに役立ちます。

もちろん、コピー&ペーストできない Web サイトに遭遇した場合は、Web クローラーがさらに威力を発揮します

Web クローラーが必要な理由

データ分析を行う必要がある場合- そして多くの場合、これらのデータは Web ページに保存されており、手動でのダウンロードには時間がかかりすぎます。現時点では、これらのデータを自動的にクロールできるようにする Web クローラーが必要です (もちろん、Web 上で利用できないデータはフィルターで除外されます)使用するもの)

Web クローラーのアプリケーション

ネットワーク データへのアクセスと収集には非常に幅広い用途があり、その多くはデータ サイエンスの分野に属します。次の例を見てください:

淘宝網の販売者は、顧客の心をさらに捉え、顧客のショッピング心理を分析するために、大量のレビューから有用な肯定的情報と否定的情報を見つける必要があります。 Twitter と Weibo うつ病や自殺願望を特定するための予測モデルを構築するためのデータセットを構築するための情報 - より多くの困っている人が助けを得ることができるように - もちろん、プライバシー関連の問題も考慮する必要があります - しかし、クールであるだけではありませんそれ?

人工知能エンジニアとして、彼らは Ins からボランティアの好みの写真をクロールして、与えられた画像がボランティアに気に入られるかどうかを予測する深層学習モデルをトレーニングしました。;携帯電話メーカーは、これらのモデルを写真アプリをプッシュして送信します。 ECプラットフォームのデータサイエンティストは、ユーザーが閲覧した商品の情報をクロールし、分析・予測を行うことで、ユーザーが最も知りたい、最も買いたい商品をプッシュします

はい! Web クローラーは、高解像度の壁紙や写真の毎日のバッチ クローリングから、人工知能、深層学習、ビジネス戦略策定のためのデータ ソースに至るまで、幅広く使用されています。

この時代はデータの時代、データは「新しい石油」です

2. ネットワーク伝送プロトコル HTTP

はい、Web クローラーに関して言えば、避けては通れないのは、もちろん、この HTTP については、ネットワーク エンジニアのようにプロトコル定義をすべて詳しく理解する必要はありませんが、入門としてはある程度の理解は必要です。 ## 国際標準化機構 ISO はオープン通信システム相互接続参照モデル OSI を維持しており、このモデルはコンピュータ通信構造を 7 つの層に分割します

    物理層: イーサネット プロトコル、USB プロトコルを含む、Bluetooth プロトコルなど
  1. #データリンク層: イーサネットプロトコルを含む
  2. ##ネットワーク層: IP プロトコルを含む

  3. ##トランスポート層: TCP、UDP プロトコルを含む

  4. セッション層: セッションの開始/終了および管理のためのプロトコルが含まれます

  5. # プレゼンテーション層: データの書式設定と変換を保護するためのプロトコルが含まれています
  6. アプリケーション層: HTTP および DNS ネットワーク サービス プロトコルが含まれています
  7. ##次に、以下を見てみましょう。 HTTP リクエストとレスポンスがどのようなものであるか (後でリクエスト ヘッダーの定義に関係するため) 一般的なリクエスト メッセージは次の内容で構成されます。
  8. #リクエスト ライン

複数のリクエストヘッダー
  • 空行
  • ##オプションのメッセージ本文

  • ##特定のリクエスト メッセージ:

    GET https://www.baidu.com/?tn=80035161_1_dg HTTP/1.1
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-GB;q=0.5,en;q=0.3
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
    Accept-Encoding: gzip, deflate, br
    Host: www.baidu.com
    Connection: Keep-Alive

    これはアクセスです。もちろん、Python のリクエスト パッケージがクロールの完了に役立つため、Baidu のリクエストの多くの詳細を知る必要はありません。
  • もちろん、リクエストに対して Web ページから返された情報も表示できます:

    HTTP/1.1 200 OK //这边的状态码为200表示我们的请求成功
    Bdpagetype: 2
    Cache-Control: private
    Connection: keep-alive
    Content-Encoding: gzip
    Content-Type: text/html;charset=utf-8
    Date: Sun, 09 Aug 2020 02:57:00 GMT
    Expires: Sun, 09 Aug 2020 02:56:59 GMT
    X-Ua-Compatible: IE=Edge,chrome=1
    Transfer-Encoding: chunked

    3. リクエスト ライブラリ (理論的な知識が苦手な学生はここに直接来てください)
Python にもHTTP を処理するための他のプリセット ライブラリ (urllib と urllib3) もありますが、request ライブラリの方が学習しやすく、コードがシンプルで理解しやすいです。もちろん、Web ページのクロールに成功し、興味のあるものを抽出できたら、別の非常に便利なライブラリである Beautiful Soup について触れます。これは後で詳しく説明します

#1. リクエスト ライブラリのインストール

ここで、インストールするリクエストの .whl ファイルを直接見つけることも、pip を使用して直接インストールすることもできます (もちろん、pycharm をお持ちの場合は、内部の環境が読み込みとダウンロードを行っているため、直接インストールできます)

2. 実際の戦闘

いよいよ Web ページのクロールを正式に開始します

コードは次のとおりです:

import requests
target = 'https://www.baidu.com/'
get_url = requests.get(url=target)
print(get_url.status_code)
print(get_url.text)

出力結果

200 //返回状态码200表示请求成功
<!DOCTYPE html>//这里删除了很多内容,实际上输出的网页信息比这要多得多
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;
charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge>
<meta content=always name=referrer>
<link rel=stylesheet type=text/css 
src=//www.baidu.com/img/gs.gif> 
</p> </div> </div> </div> </body> </html>

上記の 5 行のコードは多くのことを行っています。すでに Web ページのすべての HTML コンテンツをクロールできます。

コードの 1 行目: リクエスト ライブラリをロードします。コードの 2 行目: Web サイト番号を入力します。 3 行のコード: リクエストを使用したリクエストの一般的な形式は次のとおりです:

对象 = requests.get(url=你想要爬取的网站地址)

コードの 4 行目: リクエストのステータス コードを返します。コードの 5 行目: 出力対応するコンテンツ本文

もちろん、その他のコンテンツを印刷することもできます

import requests

target = &#39;https://www.baidu.com/&#39;
get_url = requests.get(url=target)
# print(get_url.status_code)
# print(get_url.text)
print(get_url.reason)//返回状态
print(get_url.headers)
//返回HTTP响应中包含的服务器头的内容(和上面展示的内容差不多)
print(get_url.request)
print(get_url.request.headers)//返回请求中头的内容
OK
{&#39;Cache-Control&#39;: &#39;private, no-cache, no-store, proxy-revalidate, no-transform&#39;, 
&#39;Connection&#39;: &#39;keep-alive&#39;, 
&#39;Content-Encoding&#39;: &#39;gzip&#39;, 
&#39;Content-Type&#39;: &#39;text/html&#39;, 
&#39;Date&#39;: &#39;Sun, 09 Aug 2020 04:14:22 GMT&#39;,
&#39;Last-Modified&#39;: &#39;Mon, 23 Jan 2017 13:23:55 GMT&#39;, 
&#39;Pragma&#39;: &#39;no-cache&#39;, 
&#39;Server&#39;: &#39;bfe/1.0.8.18&#39;, 
&#39;Set-Cookie&#39;: &#39;BDORZ=27315; max-age=86400; domain=.baidu.com; path=/&#39;, &#39;Transfer-Encoding&#39;: &#39;chunked&#39;}
<PreparedRequest [GET]>
{&#39;User-Agent&#39;: &#39;python-requests/2.22.0&#39;, 
&#39;Accept-Encoding&#39;: &#39;gzip, deflate&#39;, 
&#39;Accept&#39;: &#39;*/*&#39;, 
&#39;Connection&#39;: &#39;keep-alive&#39;}

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

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