Scripyフレームワークで使う基本的な知識


scrapyはTwistedに基づく非同期処理の枠組みであり、拡張性が強い。長所はここでもういちいちくどくど説明しない。
次にいくつかの概念的な知識を紹介して、みんなにscrapyを理解するように手伝います。
一、データの流れ
このフレームを上手に使いこなすためには、データの流れがどのようになっているかを知る必要があります。まとめは以下の通りです
1.エンジンはまずウェブサイトを開けて、urlをお願いします。
2.エンジンはスケジューラによってRequest形式でurlをスケジュールする。
3.エンジンは次のurlを要求します。
4.スケジューラは、urlをDownloader Middlewaresを通じてエンジンに送信します。
5.Downloaderはreponseを生成し、Downloader Middlewaresを通じてエンジンに送信する。
6.エンジン受信Resonse spider Middlewareでspiderに送信する処理
7.レスポンスの処理
8.エンジンはspider処理のitemをItemPipelineに与え、新しいRequestをスケジューラに供給します。
二、各構造の役割
Downloder Middleware
スケジューラは列からRequestを取り出してDownloaderにダウンロードを実行します。このプロセスはDownloader Middlewareの処理を経ます。
作用の位置は二つあります。
  • は、スケジューラからRequestを呼び出してDownloaderに送信する前に。
  • ダウンロードした後、Responseを生成してspiderに送信する前に。
  • 核心方法は三つあります。
    process.request(request、spider)
    RequestがDownloaderに到達する前に呼び出しられます。
    パラメータの紹介:
  •          request:Requestオブジェクトは、処理されたRequestです。
  •          spider:spiderオブジェクト、上で処理されるRequestに対応するspider。
  • 戻り値:
    1.None に戻って、Requestを実行してResonseを得るまで、他のprocess_request()方法を呼び出します。
    2.Responseオブジェクトに戻り、低優先度のprocess_request()およびprocess_exceptionは起動しません。
    3.requestオブジェクトを返し、低優先度のprocess_request()は実行を停止し、新しいRequestを返します。
    process.レスポンス(request,レスポンス,spider)
    位置:
  • DownloaderがRequestを実行すると、対応するReponseが得られ、scrapyエンジンはReponseをspidearに送信して解析し、送信する前にこの方法を呼び出してReponseを処理します。
  • 戻り値の場合:
    1.Requestに戻る優先度の低いprocess_respons()は起動しません。
    2.responseの低優先度を返し、process_respons()の呼び出しを継続する。
    process.exception(request,exception,spider)
    この関数は主に異常を処理するために使われます。
    spider Middleware
    位置:
  • DownloaderはResponseを生成した後、spiderに送ります。
  • は発送前にspider Middlewareで処理されます。
  • コア方法:
    process.soider_input(レスポンス、spider)
    戻り値:
    1.Noneに戻る
     Responseを引き続き処理して、すべてのspiderMiddlewareを呼び出して、spider処理を知っています。
    2.飛び出す異常
    Requestのerrback()メソッドを直接呼び出し、process_spider_output()を用いて処理する。
    process.spider_out put(reponse,reult,spider)
    spiderがResponseを処理して結果を返すと呼び出しられます。
    process.spider_exception(レスポンス、exception、spider)
    戻り値:none
    引き続きレスポンスを処理し、反復可能なオブジェクトを返し、process_spider_output()方法を呼び出します。
    process.startrequestrequests、spider)spiderで起動されたRequestをパラメータとして呼び出され、requestに戻る必要があります。
    締め括りをつける
    以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持ってほしいです。ありがとうございます。もっと知りたいなら、下のリンクを見てください。