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オブジェクトのフォームデータをあらかじめ入力する。
あまり深く調査する時間がなかったので、ここまで。。