PythonWebクローラー1

1Webクローラーの前奏曲

1.1Webクローラーコースのコンテンツのガイド

ここに画像の説明を挿入

1.2Python言語開発ツールの選択

ここに画像の説明を挿入
このレッスンでは、主に次の4種類を使用します
ここに画像の説明を挿入
。PythonのIDLEは、Pythonに付属するデフォルトの一般的に使用されるエントリーレベルのオーサリングツールです。

2Webクローラーのルール

ここに画像の説明を挿入

2.1Requestsライブラリの使用を開始する

2.1.1リクエストのインストール方法

Requestsライブラリ(http://www.python-requests.org)は、最高のクロールサードパーティライブラリとして認識されています。2つの特徴があります。

  1. シンプル
  2. 非常に簡潔で、1行のコードでも、Webページから対応するリソースを取得できます。

インストール方法:管理者としてコマンド
ここに画像の説明を挿入
テストを実行します
ここに画像の説明を挿入
ここに画像の説明を挿入

2.1.2リクエストライブラリのget()メソッド

ここに画像の説明を挿入
ここに画像の説明を挿入
Pythonの大文字と小文字の区別
ここに画像の説明を挿入
requestメソッドは
Requestsライブラリをカプセル化するために使用され、合計7つの一般的なメソッドを提供します
ここに画像の説明を挿入
ここに画像の説明を挿入
。requestメソッドは基本メソッドであり、他の6つのメソッドはr.status_codeを達成するためにrequestメソッドを呼び出すことを提供します。ステータスコードを確認します。リクエストの。200の場合は、返品が成功したことを意味します。
r.headers:ページのヘッダー情報を取得します。Response
オブジェクトには、サーバーから返されたすべての情報とサービスから要求された要求情報が含まれます
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
。ネットワーク上のリソースはエンコードされています。エンコードがない場合、読み取り不能になります。
.r.apparent_encodingは、r.encodingよりも読みやすく正確です

2.1.3Webページをクロールするための一般的なコードフレームワーク


GETをすることができ、正確かつ確実にクロール。ネットワーク接続が危険で、例外処理は非常に重要であるため、
ここに画像の説明を挿入
。コンテンツを取得するURLリクエストを送信してから、全体のプロセスの例外:タイムアウト
のconnecttimeout:ちょうど、リモートサーバーに接続する
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
共通コードフレームワークにより、クロールがより安定し、より効果的で信頼性が高くなります

2.1.4HTTPプロトコルとRequestsライブラリメソッド

HTTPプロトコル

ここに画像の説明を挿入
ユーザーがリクエストを開始し、サーバーが応答します。
ステートレス要求は、最初と2番目の間に相関関係がないことです。
アプリケーション層プロトコルは、プロトコルがtcpプロトコル(?)の上で機能することを意味します
ここに画像の説明を挿入
ここに画像の説明を挿入
これは、ファイルのパスに存在することを除いて、ファイルのパスと同等です。
ここに画像の説明を挿入
Requestsライブラリ関数によって提供されるインターネット

ここに画像の説明を挿入
HTTPプロトコルは、URLを介してリソースを検索し、一般的に使用される6つの方法でリソースを管理します。各操作は独立しており、ステートレスです
。HTTPプロトコルの世界では、ネットワークチャネルとサーバーはブラックボックスです。彼が見ることができるのは、URLとそれに対応するURLの操作です。

ここに画像の説明を挿入

ライブラリメソッドをリクエストします(post()、put())

ここに画像の説明を挿入
ここに画像の説明を挿入
トラフィックが非常に少ないネットワークリソースの要約情報を取得します

リクエストpost()メソッドのタイプが異なり、得られる結果も異なります:
1.2 ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

2.1.2リクエストライブラリの主なメソッドの分析

リクエスト

ここに画像の説明を挿入
ここに画像の説明を挿入
オプション:サーバーがカスタマーサービスとやり取りできるサービスからいくつかのパラメーターを取得します。これはリソースの取得に直接関係しないため、あまり使用されません。
ここに画像の説明を挿入
ここに画像の説明を挿入
サーバーへのデータの送信
ここに画像の説明を挿入
も一般的なデータ送信です
ここに画像の説明を挿入
カスタムHTTPヘッダー
Chrome / 10 :Chromeの10番目を表し
ますこのバージョンは、サーバーへのアクセスを送信するために任意のブラウザーをシミュレート
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
し、ユーザーがWebページをクロールした元のIPアドレスを非表示にすることができます
ここに画像の説明を挿入

取得する

ここに画像の説明を挿入

ここに画像の説明を挿入

役職

ここに画像の説明を挿入

置く

ここに画像の説明を挿入

パッチ

ここに画像の説明を挿入

削除

ここに画像の説明を挿入

総括する

なぜこのように設計されているのですか?最後の6つのメソッドでは、特定のパラメーターを使用する必要があるメソッドがあるため、これらのパラメーターは表示定義パラメーターとしてパラメーターに入れられ、その他のパラメーターはオプションのパラメーターに入れられます。get
メソッド、コンテンツをクロールするために最も一般的に使用されます。サーバー。コンテンツを送信せずに

2.1.3まとめ

ここに画像の説明を挿入
getrawlerを
使用するheadを使用してより大きなリソースの概要を取得する
ここに画像の説明を挿入
ここに画像の説明を挿入

import requests
import time

def getHTMLText(url):
    try:
        r=requests.get(url)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
    except:
        print("failed")


if __name__=="__main__":
    start=time.perf_counter()
    for i in range(100):
        getHTMLText("http://www.baidu.com")
    end=time.perf_counter()
    print("用时%.5f秒"%(end-start))

ここに画像の説明を挿入
ここに画像の説明を挿入
100回クロールに成功したかどうかは考慮していません。

2.2Webクローラーの「海賊も盗難」

2.2.1Webクローラーによって引き起こされる問題

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

2.2.2ロボットプロトコル

ここに画像の説明を挿入
ここに画像の説明を挿入
「?」「popmディレクトリ内のhtmlファイル」は許可されていません。
ここに画像の説明を挿入
ロボットプロトコルがないということは、任意にクロールできることを意味します

2.2.3ロボット契約を遵守する方法

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
つまり、訪問は少ないです

2.3リクエストの実際の戦闘ライブラリWebクローラー(5つの例)

クローラーの観点からWebコンテンツを見る

2.3.1JD製品ページのクロール

ここに画像の説明を挿入
r.encoding:エンコーディング情報はHTTPヘッダーから解析でき、JD.comがエンコーディングを提供します

import requests
import time

def getHTMLText(url):
    try:
        r=requests.get(url)
        r.raise_for_status()
        r.encoding=r.apparent_encoding
        print(r.text[:1000])
    except:
        print("failed")


if __name__=="__main__":
    getHTMLText("https://item.jd.com/100006349587.html")

実際に飛び出したのはログインでした
ここに画像の説明を挿入

2.3.2Amazon商品ページのクロール

ここに画像の説明を挿入
ここに画像の説明を挿入
クロールバックできるということは、ネットワークの問題ではないことを意味します。
つまり、ウェブサイトがクローラーのリクエストを拒否しました。
レスポンスオブジェクトrにはリクエストリクエストが含まれている
ため、ヘッダー情報を変更する必要があります。
ここに画像の説明を挿入
ここに画像の説明を挿入

2.3.3 Baidu360検索キーワードの送信

ここに画像の説明を挿入
ここに画像の説明を挿入
内容を分析した後、それについて話します
ここに画像の説明を挿入

2.3.4ネットワーク画像のクロールと保存

ここに画像の説明を挿入
ここに画像の説明を挿入
写真はバイナリ形式ですが、ファイルとして保存するにはどうすればよいですか?

  • カスタム名
    ここに画像の説明を挿入
  • 元の名前
    ここに画像の説明を挿入

2.3.5IPアドレス属性の自動クエリ

ここに画像の説明を挿入
ここに画像の説明を挿入
r.text [-500:]などのr.textのサイズを制限してみてください。そうしないと、アイドルの使用に影響します。
ここに画像の説明を挿入
ボタンを押した後にバックグラウンドに送信されるURLの形式を知っている限り、シミュレーション送信をコーディングできます

おすすめ

転載: blog.csdn.net/qq_42713936/article/details/105804104