ホームページ  >  記事  >  バックエンド開発  >  Python クローラー - スクレイピーの導入と使用

Python クローラー - スクレイピーの導入と使用

angryTom
angryTom転載
2019-11-29 15:56:295222ブラウズ

scrapy のプロセス

Python クローラー - スクレイピーの導入と使用

プロセスは次のように説明できます:

● スケジューラーがリクエストを送信します--> ;エンジン- ->ダウンロード ミドルウェア--->ダウンローダー

#● ダウンローダーはリクエストを送信し、応答を取得します---->ダウンロード ミドルウェア---->エンジン--->クローラー中間ファイル--->クローラ

#● クローラはURLアドレスを抽出し、それをリクエストオブジェクトに組み立てます---->クローラミドルウェア--->エンジン--->スケジューラ

● クローラーによるデータの抽出 ---> エンジン ---> パイプライン

#● パイプラインによるデータの処理と保存

#推奨学習:

Python ビデオ チュートリアル

注: 画像内の緑色の線はデータの送信を表します

画像内のミドルウェアの位置に注意してください。これによりその役割が決まります

エンジンの場所に注意してください。以前はすべてのモジュールが互いに独立しており、エンジンとのみ対話していました

scrapy における各モジュールの特定の役割

1.scrapy プロジェクトの実装プロセスPython クローラー - スクレイピーの導入と使用

scrapy プロジェクトを作成します:scrapy startproject プロジェクト名
クローラーを生成します:scrapy genspider クローラー名はクローリング範囲を許可します

データの抽出 : スパイダーの改良、xpath などのメソッドを使用

データの保存: データをパイプラインに保存

2. スクレイピー プロジェクトの作成

コマンド:scrapy startproject 例:scrapy startproject myspider

生成されたディレクトリとファイルの結果は次のとおりです:

##settings.py の重要なポイント フィールドとその意味

##● USER_AGENT Set ua

#● ROBOTSTXT_OBEY ロボット プロトコルに準拠するかどうか、デフォルトは Python クローラー - スクレイピーの導入と使用##● CONCURRENT_REQUESTS同時リクエストの数を設定します。デフォルトは 16 です。

#DOWNLOAD_DELAY ダウンロードの遅延、デフォルトは遅延なしです。

#● COOKIES_ENABLED Cookie を有効にするかどうか。つまり、各リクエストが前の Cookie を持ち込むかどうか。デフォルトは有効です

#● DEFAULT_REQUEST_HEADERS デフォルトのリクエスト ヘッダーを設定します

#● SPIDER_MIDDLEWARES クローラー ミドルウェア、設定プロセスはパイプラインと同じです

#● DOWNLOADER_MIDDLEWARES ダウンロード ミドルウェア

クローラーの作成

#コマンド:scrapy genspider

生成されたディレクトリとファイルの結果は次のとおりです。 :

完璧なスパイダー

スパイダーを改善するということは、メソッドを通じてデータを抽出することを意味します:

注: Python クローラー - スクレイピーの導入と使用

#response.xpath メソッドの戻り結果は、セレクター オブジェクトを含むリストのような型です。操作はリストと同じですが、次のものが含まれます。いくつかの追加メソッド

##● extract() は文字列を含むリストを返します #● extract_first() はリストの最初の文字列を返しますリストが空の場合は None が返されます
● スパイダーの解析メソッドには次の条件が必要です。

#● 取得する必要があります。 URL アドレスは allowed_domains に属している必要がありますが、start_urls の URL アドレスにはこの制限がありません。

#● クローラーの起動時開始場所に注意してください。プロジェクト パスの下で開始されます

Python クローラー - スクレイピーの導入と使用データはパイプラインに渡されます

#理由収量を使用しますか?

# 関数全体をジェネレーターに変える利点は何ですか?

# この関数の戻り値をトラバースするときは、データを 1 つずつメモリに読み込んでください。これにより、メモリが瞬時に過剰になることはありません。

# python3 での範囲Python2 の xrange と同じです。

注:

yield で渡すことができるオブジェクトは、BaseItem、Request、dict、None

6 のみです。パイプラインを改善する

Python クローラー - スクレイピーの導入と使用

パイプラインは設定で開くことができます。複数のパイプラインを開く必要があるのはなぜですか?

#● 異なるパイプラインは、異なるクローラーからのデータを処理できます。

#● 異なるパイプラインは、データ クリーニング用とデータ ストレージ用など、異なるデータ処理操作を実行できます

パイプライン利用時の注意点

●利用前に設定で有効にする必要があります

# パイプライン設定のキーは位置 (つまり、プロジェクト内のパイプラインの位置はカスタマイズ可能) を表し、値はエンジンからの距離を表します。データが近いほど高速になります。

## を通過します。 複数のパイプラインがあります。 このとき、 process_item メソッドは item を返す必要があります。そうでない場合、後者のパイプラインによって取得されるデータは None 値になります。

#パイプラインが存在する必要があります。存在しない場合、アイテムはそれを受け入れて処理できません。

# process_item このメソッドはアイテムとスパイダーを受け入れます。ここで、スパイダーは現在アイテムを渡しているスパイダーを表します。 Python チュートリアル

列、学習へようこそ!

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

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