たなちの備忘録

自分の知識をストックしていくためのブログ

【scrapy】 Request Objectについて忘備録

スポンサーリンク

scrapyの結果をyieldで返しているのだが、FormRequestがどんなものなのか気になった。
RequestObjectがわかっていなかったのでメモ。
公式ドキュメント:Requests and Responses — Scrapy 1.5.0 documentation

Request objects

class scrapy.http.Request(url[, callback, method='GET', headers, body, cookies, meta, encoding='utf-8', priority=0, dont_filter=False, errback])

RequestオブジェクトはHTTPリクエストを表す。通常Spiderで生成され、Downloaderによって実行され、Responseを生成する。
引数でよく目にするものをメモ。

  • url:このリクエストのurl、読み取り専用。
  • method:リクエスト内のHTTPメソッドを表す文字列。 大文字。 例: "GET"、 "POST"、 "PUT"など
  • callback: 最初のパラメータとしてこのリクエストのレスポンス(ダウンロードされた後)で呼び出される関数。 リクエストでコールバックが指定されていない場合は、spiderのparse()メソッドが使用される。 処理中に例外が発生した場合は、代わりにerrbackが呼び出されることに注意。
  • meta(dict) - Request.meta属性の初期値。 指定すると、このパラメータで渡されたdictはshallow copyされる。

※shallow copyを和訳すると「浅いコピー」になり?と思ったのでメモ
http://docs.python.jp/2/library/copy.html

・浅いコピー (shallow copy) は新たな複合オブジェクトを作成し、その後 (可能な限り) 元のオブジェクト中に見つかったオブジェクトに対する 参照 を挿入します。
・深いコピー (deep copy) は新たな複合オブジェクトを作成し、その後元のオブジェクト中に見つかったオブジェクトの コピー を挿入します。

FormRequest objects

FormRequestクラスは、htmlフォームを扱うための機能を備えたRequestを拡張する。
lxml.htmlフォームを使用して、フォームフィールドにResponseオブジェクトのフォームデータをあらかじめ入力する。

あまり深く調査する時間がなかったので、ここまで。。