scrapy のプロセス
プロセスは次のように説明できます:
● スケジューラーがリクエストを送信します--> ;エンジン- ->ダウンロード ミドルウェア--->ダウンローダー
#● ダウンローダーはリクエストを送信し、応答を取得します---->ダウンロード ミドルウェア---->エンジン--->クローラー中間ファイル--->クローラ#● クローラはURLアドレスを抽出し、それをリクエストオブジェクトに組み立てます---->クローラミドルウェア--->エンジン--->スケジューラ
● クローラーによるデータの抽出 ---> エンジン ---> パイプライン
#● パイプラインによるデータの処理と保存#推奨学習:
Python ビデオ チュートリアル
画像内のミドルウェアの位置に注意してください。これによりその役割が決まります
エンジンの場所に注意してください。以前はすべてのモジュールが互いに独立しており、エンジンとのみ対話していました
scrapy における各モジュールの特定の役割
1.scrapy プロジェクトの実装プロセス
scrapy プロジェクトを作成します:scrapy startproject プロジェクト名
クローラーを生成します:scrapy genspider クローラー名はクローリング範囲を許可します
データの抽出 : スパイダーの改良、xpath などのメソッドを使用
データの保存: データをパイプラインに保存
2. スクレイピー プロジェクトの作成コマンド:scrapy startproject 例:scrapy startproject myspider
生成されたディレクトリとファイルの結果は次のとおりです:
##settings.py の重要なポイント フィールドとその意味
##● USER_AGENT Set ua#● ROBOTSTXT_OBEY ロボット プロトコルに準拠するかどうか、デフォルトは ##● CONCURRENT_REQUESTS同時リクエストの数を設定します。デフォルトは 16 です。
#DOWNLOAD_DELAY ダウンロードの遅延、デフォルトは遅延なしです。
#● COOKIES_ENABLED Cookie を有効にするかどうか。つまり、各リクエストが前の Cookie を持ち込むかどうか。デフォルトは有効です#● DEFAULT_REQUEST_HEADERS デフォルトのリクエスト ヘッダーを設定します
#● SPIDER_MIDDLEWARES クローラー ミドルウェア、設定プロセスはパイプラインと同じです#● DOWNLOADER_MIDDLEWARES ダウンロード ミドルウェア
クローラーの作成#コマンド:scrapy genspider 生成されたディレクトリとファイルの結果は次のとおりです。 : 完璧なスパイダースパイダーを改善するということは、メソッドを通じてデータを抽出することを意味します:
注:
#response.xpath メソッドの戻り結果は、セレクター オブジェクトを含むリストのような型です。操作はリストと同じですが、次のものが含まれます。いくつかの追加メソッド##● extract() は文字列を含むリストを返します #● extract_first() はリストの最初の文字列を返しますリストが空の場合は None が返されます
● スパイダーの解析メソッドには次の条件が必要です。
#● クローラーの起動時開始場所に注意してください。プロジェクト パスの下で開始されます
データはパイプラインに渡されます
#理由収量を使用しますか?
# 関数全体をジェネレーターに変える利点は何ですか?
# この関数の戻り値をトラバースするときは、データを 1 つずつメモリに読み込んでください。これにより、メモリが瞬時に過剰になることはありません。
# python3 での範囲Python2 の xrange と同じです。
注:
yield で渡すことができるオブジェクトは、BaseItem、Request、dict、None
6 のみです。パイプラインを改善するパイプラインは設定で開くことができます。複数のパイプラインを開く必要があるのはなぜですか?
#● 異なるパイプラインは、異なるクローラーからのデータを処理できます。
#● 異なるパイプラインは、データ クリーニング用とデータ ストレージ用など、異なるデータ処理操作を実行できますパイプライン利用時の注意点
●利用前に設定で有効にする必要があります
# パイプライン設定のキーは位置 (つまり、プロジェクト内のパイプラインの位置はカスタマイズ可能) を表し、値はエンジンからの距離を表します。データが近いほど高速になります。
## を通過します。 複数のパイプラインがあります。 このとき、 process_item メソッドは item を返す必要があります。そうでない場合、後者のパイプラインによって取得されるデータは None 値になります。 #パイプラインが存在する必要があります。存在しない場合、アイテムはそれを受け入れて処理できません。# process_item このメソッドはアイテムとスパイダーを受け入れます。ここで、スパイダーは現在アイテムを渡しているスパイダーを表します。 Python チュートリアル列、学習へようこそ!
以上がPython クローラー - スクレイピーの導入と使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。