リリース・ノート¶
Scrapy 2.5.0 (2021-04-06)¶
ハイライト:
Python3.9を公式にサポート
実験的な HTTP/2 サポート
新機能
get_retry_request()
関数を使用して、スパイダー・コールバックからのリクエストを再試行します新機能
headers_received
シグナルにより、ダウンロードを早期に停止できます新機能
Response.protocol
属性
非推奨による削除¶
削除 1.7.0で非推奨になった けど、まだ 2.4.0の非推奨削除 で削除されていなかった全てのコードを削除しました。
削除
SCRAPY_PICKLED_SETTINGS_TO_OVERRIDE
環境変数を削除。 1.8.0 の非推奨 (issue 4912)
非推奨¶
scrapy.utils.py36
モジュールは非推奨になり、scrapy.utils.asyncgen
が優先されます。 (issue 4900)
新機能¶
実験的
DOWNLOAD_HANDLERS
設定にてhttps
プロトコルに割り当てることができる新しいダウンロード・ハンドラーによる実験的な HTTP/2 サポート新
scrapy.downloadermiddlewares.retry.get_retry_request()
関数は、スパイダー・コールバックまたはミドルウェアから使用し、RetryMiddleware
がサポートするシナリオを超えたリクエストの再試行を処理できます。新
headers_received
シグナルは、レスポンス・ヘッダーへの早期アクセスを提供し、 ダウンロードの中止 を可能にします。 (issue 1772, issue 4897)新 new
Response.protocol
属性は、レスポンスのダウンロードに使用されるプロトコルを識別する文字列へのアクセスを提供します。 (issue 4878)統計 には、 フィード の保存の成功と失敗の数を示す以下のエントリが含まれるようになりました:
feedexport/success_count/<storage type> feedexport/failed_count/<storage type>
ここで、
<storage type>
は、FileFeedStorage
またはFTPFeedStorage
などのフィード・ストレージ・バックエンド・クラス名です。UrlLengthMiddleware
スパイダー・ミドルウェアは、無視されたURLをDEBUG
ではなくINFO
ログ・レベル でログに記録するようになりました。また、無視されたURLの数を追跡するために 統計 に以下のエントリが含まれるようになりました:urllength/request_ignored_count
HttpCompressionMiddleware
ダウンローダー・ミドルウェアは、解凍されたレスポンスの数と結果のバイトの総数をログに記録するようになりました:httpcompression/response_bytes httpcompression/response_count
バグ修正¶
PyPyDispatcherに加えてPyDispatcherをインストールする、PyPyのインストールを修正しました。これにより、インポートされたパッケージによってはScrapyが機能しなくなる可能性がありました。 (issue 4710, issue 4814)
コールバックを検査して、それが値も返すジェネレーターであるかどうかを確認するときに、コールバックに続くコードよりも低いインデントのdocstringが含まれている場合、例外が発生しなくなりました。(issue 4477, issue 4935)
デフォルトの HTTP/1.1 ダウンロード・ハンドラーを使用する場合、 Content-Length ヘッダーがレスポンスから省略されなくなりました(
DOWNLOAD_HANDLERS
参照)。 (issue 5009, issue 5034, issue 5045, issue 5057, issue 5062)handle_httpstatus_all
リクエスト・メタ・キー をFalse
に設定すると、True
に設定するのと同じ効果を持つ代わりに、まったく設定しないのと同じ効果があります。 (issue 3851, issue 4694)
文書¶
導入を追加 pip を使用してWindowsにScrapyをインストール 。 (issue 4715, issue 4736)
「ロギング」に ログをフィルタリングする追加の方法 を追加しました。 (issue 4216, issue 4257, issue 4965)
FAQ にて、許可されたドメインの長いリストを処理する方法についての説明を追加。 (issue 2263, issue 3667)
ベンチマーキング に scrapy-bench の説明を追加。 (issue 4996, issue 5016)
クローラーごとに1つの extension インスタンスが作成されることを明確にしました。 (issue 5014)
例の中のいつくかのエラーを修正 (issue 4829, issue 4830, issue 4907, issue 4909, issue 5008)
一部の外部リンク、タイプミスなどを修正しました。 (issue 4892, issue 4899, issue 4936, issue 4942, issue 5005, issue 5063)
list of Request.meta keys 今やアルファベット順にソートされています。 (issue 5061, issue 5065)
現在Zyteと呼ばれている Scrapinghub への参照を更新しました。 (issue 4973, issue 5072)
READMEの寄稿者への言及を追加しました。 (issue 4956)
リストの上部マージンを減らしました。 (issue 4974)
品質保証¶
公式に Python3.9 をサポートしました( issue 4757 、 issue 4759 )。
タイピングのヒント(typing hints)の拡張 (issue 4895)
TwistedAPIの非推奨の使用を修正しました。 (issue 4940, issue 4950, issue 5073)
新しい pip リゾルバーでテストを実行しました。 (issue 4710, issue 4814)
coroutine support がテストされていることを確認するためのテストが追加されました。 (issue 4987)
Travis CI から GitHub Actions に移行しました。 (issue 4924)
CIの問題を修正しました。 (issue 4986, issue 5020, issue 5022, issue 5027, issue 5052, issue 5053)
コードのリファクタリング、スタイルの修正、クリーンアップを実装しました。 (issue 4911, issue 4982, issue 5001, issue 5002, issue 5076)
Scrapy 2.4.1 (2020-11-17)¶
修正: フィード・エクスポート 上書きサポート (issue 4845, issue 4857, issue 4859)
修正:コードがハングする可能性がある AsyncIO イベント ループ処理 (issue 4855, issue 4872)
修正:
reactor.resolve
を呼び出すダウンロード・ハンドラー用のIPv6対応DNSリゾルバーCachingHostnameResolver
(issue 4802, issue 4803)修正:生成されたスパイダー・モジュールのインポートパスの代わりにプレース・ホルダーを表示する
genspider
コマンドの出力 (issue 4874)Azure Pipelines から GitHub Actions への Windows CI の移行 (issue 4869, issue 4876)
Scrapy 2.4.0 (2020-10-11)¶
ハイライト:
Python 3.5 のサポートは廃止されました。
メディア・パイプライン の
file_path
メソッドは、源の アイテム にアクセスできるようになりました。これにより、アイテム・データに基づいてダウンロード・ファイルのパス(path)を設定できます。
FEEDS
設定の新しいitem_export_kwargs
キーにより、 アイテム・エクスポーター・クラス に渡すキーワード・パラメータを定義できます。フィード・エクスポート が出力ファイルを上書きするか追加するかを選択できるようになりました。
たとえば、
crawl
またはrunspider
コマンドを使用する場合、出力ファイルを上書きするために-o
の代わりに-O
オプションを使用できます。zstandard がインストールされている場合、Zstd-compressedレスポンス がサポートされるようになりました。
クラスのインポート・パスが必要な設定で、代わりにクラス・オブジェクトを渡すことができるようになりました。
必須要件の変更¶
Python3.6以降が必要になりました。Python3.5のサポートは終了しました
その結果、
PyPyを使用する場合、PyPy 7.2.0以降が必要になりました( 対象とするPythonのバージョン 参照)
フィード・エクスポート または メディア・パイプライン でのAmazonS3ストレージのサポートには、 botocore 1.4.87以上が必要になりました
イメージ・パイプライン を使用するには、Pillow 4.0.0以降が必要になります
(issue 4718, issue 4732, issue 4733, issue 4742, issue 4743, issue 4764)
後方互換性のない変更¶
CookiesMiddleware
は再びRequest.headers
で定義されたクッキーを破棄します。現在の実装では既存のコードが壊れる可能性があると報告されたため、Scrapy 2.2.0 で行われたバグ修正を元に戻すことにしました。
リクエストにクッキーを設定する必要がある場合は、
Request.cookies
パラメータを使用してください。Scrapy の将来のバージョンには、元に戻されたバグ修正の新しい、より良い実装が含まれます。
非推奨による削除¶
scrapy.extensions.feedexport.S3FeedStorage
は__init__
メソッドに渡されない場合、実行中のプロジェクト設定からaccess_key
とsecret_key
の値を読み込まなくなりました。 これらのパラメータを__init__
メソッドに渡すか、あるいはS3FeedStorage.from_crawler
を使用する必要があります。 (issue 4356, issue 4411, issue 4688)Rule.process_request
は、request
とresponse
の両方ではなく、単一のrequest
パラメータを期待する呼び出し可能オブジェクトを許可しなくなりました。
非推奨¶
カスタムの メディア・パイプライン では、 現在このパラメータをサポートする どのメソッドでも
item
キーワード・オンリー・パラメータを受け入れないシグネチャは非推奨になりました。カスタム フィード・ストレージ・バックエンド・クラス では、キーワード・オンリーの
feed_options
パラメータを受け入れない__init__
メソッド・シグネチャは非推奨になりました。scrapy.utils.python.WeakKeyCache
クラスは非推奨になりました。 (issue 4684, issue 4701)scrapy.utils.boto.is_botocore()
関数は非推奨になりました。代わりにscrapy.utils.boto.is_botocore_available()
を使ってください。 (issue 4734, issue 4776)
新機能¶
メディア・パイプライン の以下メソッドは、ソース アイテム を含む
item
キーワード・オンリー・パラメータを受け入れるようになりました。scrapy.pipelines.files.FilesPipeline
内:file_downloaded()
media_downloaded()
media_to_download()
scrapy.pipelines.images.ImagesPipeline
内:file_downloaded()
get_images()
image_downloaded()
media_downloaded()
media_to_download()
FEEDS
設定の新しいitem_export_kwargs
キーにより、キーワード・パラメータを定義して アイテム・エクスポーター・クラス に渡すことができます。 (issue 4606, issue 4768)フィード・エクスポート は上書きのサポートを獲得しました:
crawl
またはrunspider
コマンドを使用する場合、出力ファイルを上書きするために-o
の代わりに-O
オプションを使用できますFEEDS
設定のoverwrite
キーを使用して、出力ファイルを上書きする (True
) か、その内容に追加する (False
) かを設定できます。フィード・ストレージ・バックエンド・クラス の
__init__
およびfrom_crawler
メソッドは、新しいキーワード・オンリー・パラメータfeed_options
を受け取るようになりました。これは、 フィード・オプション の辞書です。
zstandard がインストールされている場合、Zstd-compressedレスポンスがサポートされるようになりました(issue 4831)
クラスのインポート パスが必要な設定で、代わりにクラス オブジェクトを渡すことができるようになりました (issue 3870, issue 3873)
これには、
DOWNLOADER_MIDDLEWARES
やDOWNLOAD_HANDLERS
など、値の一部のみがインポート・パスで構成される設定も含まれます。ダウンローダー・ミドルウェア は
response.request
をオーバーライドできるようになりました。ダウンローダー・ミドルウェア が、
process_response()
またはprocess_exception()
からResponse
オブジェクトを返し、response.request
に割り当てられたカスタムRequest
オブジェクトを使用する場合:レスポンスは、元の
Request
オブジェクトのコールバックによって処理される代わりに、そのカスタムRequest
オブジェクトのコールバックによって処理されますそのカスタム
Request
オブジェクトは、元のRequest
オブジェクトの代わりに、response_received
シグナルへのrequest
引数として送信されます
FTPフィード・ストレージ・バックエンド を使う場合:
新しい
overwrite
フィード・オプション をFalse
に設定して、既存のファイルに上書きする代わりに追加することができるようになりました。FTP パスワードが不要な場合は省略できるようになりました
CsvItemExporter
の__init__
メソッドは、エンコーディング・エラーの処理方法を示すerrors
パラメータをサポートするようになりました。 (issue 4755)asyncio使用 の場合、 カスタム asyncio ループの設定 が可能になりました。
シリアライズされたリクエスト( ジョブ制御: クロールの一時停止と再開 参照) は、他の呼び出し可能オブジェクトに委任するスパイダー・メソッドであるコールバックをサポートするようになりました。 (issue 4756)
レスポンスが
DOWNLOAD_MAXSIZE
よりも大きい場合、ログに記録されるメッセージはエラーではなく警告になります (issue 3874, issue 3886, issue 4752)
バグ修正¶
genspider
コマンドは、--force
オプションを使用しない限り既存のファイルを上書きしなくなりました (issue 4561, issue 4616, issue 4623)値が空のクッキーは無効なクッキーとは見なされくなりました(issue 4772)
runspider
コマンドは、ファイル拡張子.pyw
のファイルをサポートするようになりました。 (issue 4643, issue 4646)HttpProxyMiddleware
ミドルウェアは、サポートされていないプロキシ値を単に無視するようになりました (issue 3331, issue 4778)return
文でジェネレータのコールバックをチェックしても、ネストされた関数のreturn
文について警告しなくなりました (issue 4720, issue 4721)システム・ファイル・モードの作成マスクは、
startproject
コマンドを使用して生成されたファイルのパーミッションに影響しなくなりました (issue 4722)scrapy.utils.iterators.xmliter()
は名前空間付きノード名をサポートするようになりました(issue 861, issue 4746)Request
オブジェクトはabout:
の URL達 を持つことができるようになりました。これはヘッドレス・ブラウザを使用しているときに機能します。
文書¶
FEED_URI_PARAMS
設定が文書化されました (issue 4671, issue 4724)スパイダー・コールバックと、
Link
クラスのリファレンス文書の使用例により、 リンク抽出器 の文書を改善しました (issue 4751, issue 4775)CloseSpider
拡張機能を使用する場合のCONCURRENT_REQUESTS
の影響を明確にしました (issue 4836)Python 2 の
unicode
型への参照を削除 (issue 4547, issue 4703)今や 公式の非推奨ポリシー ができました (issue 4705)
ドキュメントポリシー は、Sphinx の
versionadded
ディレクティブとversionchanged
ディレクティブの使用に対応し、Scrapy 1.4.0 以前のバージョンを参照する使用法を削除しました。 (issue 3971, issue 4310)その他のドキュメントの整理 (issue 4090, issue 4782, issue 4800, issue 4801, issue 4809, issue 4816, issue 4825)
品質保証¶
型のヒントの拡張 (issue 4243, issue 4691)
check
コマンドのテストを追加 (issue 4663)Debianでのテストの失敗を修正しました。 (issue 4726, issue 4727, issue 4735)
Windows テスト カバレッジの改善 (issue 4723)
可能な場合は 書式化された文字列リテラル に切り替え (issue 4307, issue 4324, issue 4672)
現代化された
super()
の使用法 (issue 4707)その他のコードとテストの整理 (issue 1790, issue 3288, issue 4165, issue 4564, issue 4651, issue 4714, issue 4738, issue 4745, issue 4747, issue 4761, issue 4765, issue 4804, issue 4817, issue 4820, issue 4822, issue 4839)
Scrapy 2.3.0 (2020-08-04)¶
ハイライト:
フィード・エクスポート は、ストレージ・バックエンドとして Google Cloud Storage をサポートするようになりました
新しい
FEED_EXPORT_BATCH_ITEM_COUNT
設定により、指定された数のアイテムのバッチで出力アイテムを配信できます。これは、特定のストレージ・バックエンド (S3 と FTP と 今回の GCS) を使用している場合、クロールが完了した後にのみ Scrapy がアイテムの配信を開始する 遅延ファイル配信 の回避策としても機能します。
itemloaders の基本実装は別のライブラリ itemloaders に移動され、Scrapy の外部からの使用と別のリリースのスケジューリングが可能になりました。
非推奨による削除¶
以下のクラスとその親モジュールを
scrapy.linkextractors
から削除しました:htmlparser.HtmlParserLinkExtractor
regex.RegexLinkExtractor
sgml.BaseSgmlLinkExtractor
sgml.SgmlLinkExtractor
代わりに
LinkExtractor
を使用してください (issue 4356, issue 4679)
非推奨¶
scrapy.utils.python.retry_on_eintr
関数は非推奨になりました (issue 4683)
新機能¶
フィード・エクスポート が Google Cloud Storage をサポート (issue 685, issue 3608)
バッチ配信用の新しい
FEED_EXPORT_BATCH_ITEM_COUNT
設定 (issue 4250, issue 4434)parse
コマンドで出力ファイルを指定できるようになりました (issue 4317, issue 4377)Request.from_curl
とcurl_to_request_kwargs()
は--data-raw
もサポートするようになりました (issue 4612)parse
コールバックはCrawlSpider
などの組み込みスパイダー・サブクラスで使用できるようになりました。 (issue 712, issue 732, issue 781, issue 4254 )
バグ修正¶
dataclassアイテム および attr.s アイテム の CSV エクスポート を修正しました (:issue: 4667, issue 4668)
Request.from_curl
とcurl_to_request_kwargs()
は、リクエスト・ボディが指定され、リクエスト・メソッドが指定されていない場合、リクエスト・メソッドをPOST
に設定するようになりました (issue 4612)Windows 10.0.14393 以降では、カラー出力に必要な ANSI エスケープ シーケンスの処理が有効になっています。 (issue 4393, issue 4403)
文書¶
DOWNLOADER_CLIENT_TLS_CIPHERS
設定に関する文書で OpenSSL cipher list format リンクを更新しました (issue 4653)dataclassアイテムの操作 のコード例を簡略化 (issue 4652)
品質保証¶
itemloaders の基本実装は itemloaders に移動しました。 (issue 4005, issue 4516)
いくつかのスケジューラーテストの沈黙エラー(silenced error)を修正 (issue 4644, issue 4645)
SSLテストに使用されるローカルホスト証明書を更新 (issue 4650)
Python2固有のクッキー処理コードを削除 (issue 4682)
Python 2 unicode リテラル構文の使用を停止 (issue 4704)
行継続のためのバックラッシュの使用をやめました (issue 4673)
MyPy 例外リストから不要なエントリを削除 (issue 4690)
継続的インテグレーション・システムの一部として自動テストがWindowsでパス(pass)するようになりました (issue 4458)
自動テストは、継続的インテグレーション・システムでサポートされている Python バージョンの最新の PyPy バージョンに合格するようになりました (issue 4504)
Scrapy 2.2.1 (2020-07-17)¶
startproject
コマンドは、実行パーミッションの削除など、宛先フォルダー内のファイルのパーミッションに意図しない変更を加えなくなりました。 (issue 4662, issue 4666)
Scrapy 2.2.0 (2020-06-24)¶
ハイライト:
今や Python 3.5.2+ が必要です。
dataclassオブジェクト と attrsオブジェクト は今や有効な アイテム型 になりました
新
TextResponse.json
メソッド新
bytes_received
シグナルはレスポンスのダウンロードをキャンセルできます
後方互換性のない変更¶
Python 3.5.0 および 3.5.1 のサポートは廃止されました。 Scrapy は
typing.Type
が導入された 3.5.2 より前の Python バージョンでの実行を拒否するようになりました。 (issue 4615)
非推奨¶
TextResponse.body_as_unicode
は非推奨になりました。代わりにTextResponse.text
を使用してください (issue 4546, issue 4555, issue 4579)scrapy.item.BaseItem
は非推奨になりました。代わりにscrapy.item.Item
を使用してください (issue 4534)
新機能¶
dataclassオブジェクト と attrsオブジェクト が有効な アイテム型 となり、新しい itemadapter ライブラリにより、 あらゆるアイテム型をサポートする コードを簡単に記述できるようになりました。 (issue 2749, issue 2807, issue 3761, issue 3881, issue 4642)
新しい
TextResponse.json
メソッドにより、JSONレスポンスを逆シリアライズできます (issue 2444, issue 4460, issue 4574)新しい
bytes_received
シグナルにより、レスポンスのダウンロードの進行状況を監視し、 ダウンロードの停止(stop) を行う事ができます。 (issue 4205, issue 4559)メディア・パイプライン の結果リストの辞書には、ファイルがダウンロードされたかどうか、ファイルがダウンロードされなかった場合はダウンロードされなかった理由を示す新しいキー
status
が含まれるようになりました。詳細については、FilesPipeline.get_media_requests
を参照してください。 (issue 2893, issue 4486)メディア・パイプライン に対して Google Cloud Storage を使用する場合、構成された資格情報が必要な権限を付与しない場合、警告がログに記録されるようになりました ( issue 4346, issue 4508)
リンク抽出器 は、パラメータに ラムダ式(lambda) を使用しない限り、シリアライズ可能になりました。 たとえば、 スケジュールされたリクエストを永続化 するときに、
Request.cb_kwargs
またはRequest.meta
でリンク抽出器を渡すことができるようになりました (issue 4554)Scrapy が使用する pickle プロトコル をプロトコル2からプロトコル4にアップグレードし、シリアル化機能と性能を改善しました (issue 4135, issue 4541)
scrapy.utils.misc.create_instance()
は、結果のインスタンスがNone
の場合にTypeError
例外を送出するようになりました (issue 4528, issue 4532)
バグ修正¶
CookiesMiddleware
はもはやRequest.headers
で定義されたクッキーを破棄しません (issue 1992, issue 2400)CookiesMiddleware
は、Request
の__init__
メソッドのcookies
パラメータでbytes
として定義されたクッキーを再エンコードしなくなりました。 (issue 2400, issue 3575)FEEDS
が複数の URI を定義し、 かつFEED_STORE_EMPTY
がFalse
であり、かつ クロールでアイテムが生成されない場合、Scrapy は最初の URI の後にフィードのエクスポートを停止しなくなりました (issue 4621, issue 4626)コルーチン構文 を使用して定義された
Spider
コールバックは、反復可能オブジェク(iterable)を返す必要がなくなり、代わりにRequest
オブジェクト、または アイテム 、またはNone
を返す場合があります (issue 4609)startproject
コマンドは、生成されたプロジェクト・フォルダとファイルに適切なパーミッションを付与するようになりました (issue 4604)修正:
scrapy.utils.datatypes.LocalWeakReferencedCache
から時々発生するKeyError
例外を修正 (issue 4597, issue 4599)FEEDS
が複数の URI を定義する場合、保存されているアイテム達に関するログ・メッセージ達には、常にフィードの1つだけに関する情報を含むのではなく、対応するフィード達からの情報が含まれるようになりました。 (issue 4619, issue 4629)
文書¶
errbacks から cb_kwargs へアクセス に関する新しい節を追加しました。 (issue 4598, issue 4634)
JavaScriptコードのパース で chompjs をカバー (issue 4556, issue 4562)
API が実験的であるという警告を コルーチン から削除 (issue 4511, issue 4513)
サポートされていないバージョンの Twisted への参照を削除 (issue 4533)
スクリーンショット・パイプラインの例 の説明を更新し、
Deferred
を返す代わりに コルーチン構文 を使用するようになりました (issue 4514, issue 4593)誤解を招くインポート行を
scrapy.utils.log.configure_logging()
コード例から削除しました (issue 4510, issue 4587)内部ドキュメント参照のホバー時の表示動作は、 コマンド と
Request.meta
キーと 設定 と シグナル へのリンクもカバーするようになりました。 (issue 4495, issue 4563)オフラインで読むための文書を再びダウンロードできるようになりました (issue 4578, issue 4585)
一部の関数とメソッドのシグネチャの
*args
と**kwargs
の前にあるバックスラッシュを削除 (issue 4592, issue 4596)
品質保証¶
スタイル・ガイドライン に合わせてコード・ベースをさらに調整 (issue 4237, issue 4525, issue 4538, issue 4539, issue 4540, issue 4542, issue 4543, issue 4544, issue 4545, issue 4557, issue 4558, issue 4566, issue 4568, issue 4572)
Python2サポートの跡を削除。 (issue 4550, issue 4553, issue 4568)
crawl
コマンドとrunspider
コマンド間のコード共有の改善 (issue 4548, issue 4552)chain(*iterable)
をchain.from_iterable(iterable)
に置き換えました (issue 4635)どの Python バージョンでも Tox を使用して
asyncio
テストを実行できるようになりました (issue 4521)pytest 5.4 および 5.4.1 との非互換性を反映するようにテスト要件を更新しました (issue 4588)
スパイダー名が重複するシナリオの
SpiderLoader
テストカバレッジの改善 (issue 4549, issue 4560)Python 3.5.2 でもテストを実行するように Travis CI を構成しました (issue 4518, issue 4615)
Travis CI に Pylint ジョブを追加しました (issue 3727)
Travis CI に Mypy ジョブを追加しました (issue 4637)
テストで set リテラルを使用しました (issue 4573)
Travis CI 設定をクリーンアップ (issue 4517, issue 4519, issue 4522, issue 4537)
Scrapy 2.1.0 (2020-04-24)¶
ハイライト:
新
FEEDS
設定は複数のフィードにエクスポートするための設定です新
Response.ip_address
属性
後方互換性のない変更¶
assert 文によって引き起こされる
AssertionError
例外は、Scrapy の動作を予期しない方法で変更することなく最適化モード (-O
を参照) での Python の実行をサポートするために、新しい例外タイプに置き換えられました。あなたが Scrapy から
AssertionError
例外をキャッチしたい場合、対応する新しい例外をキャッチするためにあなたのコードを更新して下さい。
非推奨による削除¶
LOG_UNSERIALIZABLE_REQUESTS
設定はサポートされなくなりました。代わりにSCHEDULER_DEBUG
を使用してください (issue 4385)REDIRECT_MAX_METAREFRESH_DELAY
設定はサポートされなくなりました。代わりにMETAREFRESH_MAXDELAY
を使用してください (issue 4385)ChunkedTransferMiddleware
ミドルウェアが削除されました。これにはscrapy.downloadermiddlewares.chunked
モジュール全体が含まれています。これに関わらずチャンク転送はいつでも使用可能です。 (issue 4431)spiders
プロパティはCrawler
から削除されました.代わりにCrawlerRunner.spider_loader
を使用するか、設定でSPIDER_LOADER_CLASS
をインスタンス化してください (issue 4398)MultiValueDict
と``MultiValueDictKeyError`` と``SiteNode`` クラスはscrapy.utils.datatypes
から削除されました (issue 4400)
非推奨¶
FEED_FORMAT
とFEED_URI
の設定は廃止され、新しいFEEDS
設定が採用されました。 (issue 1336, issue 3858, issue 4507)
新機能¶
新しい設定
FEEDS
では、それぞれ異なる設定で複数の出力フィードを構成できます。 (issue 1336, issue 3858, issue 4507)crawl
およびrunspider
コマンドは、複数の-o
パラメータをサポートするようになりました (issue 1336, issue 3858, issue 4507)crawl
およびrunspider
コマンドは、出力ファイルに:<format>
を追加することで出力形式を指定できるようになりました (issue 1336, issue 3858, issue 4507)新
Response.ip_address
属性は、レスポンスを発信したIPアドレスへのアクセスを提供します (issue 3903, issue 3940)allowed_domains
の値にポート(port)が含まれている場合に警告が出るようになりました (issue 50, issue 3198, issue 4413)Zsh 補完により、使用されたオプション・エイリアスが補完リストから除外されるようになりました (issue 4438)
バグ修正¶
リクエストのシリアライズ は、別の名前の関数が割り当てられたスパイダー属性であるコールバックで壊れなくなりました (issue 4500)
allowed_domains
のNone
値はもはやTypeError
例外を引き起こしません (issue 4410)Zsh 補完で引数の後のオプションが許可されなくなりました (issue 4438)
zope.interface 5.0.0 以降のバージョンがサポートされるようになりました (issue 4447, issue 4448)
Spider.make_requests_from_url
は Scrapy 1.4.0 で非推奨となり、使用時に警告を発するようになりました (issue 4412)
文書¶
ハンドラーが
Deferred
を返すことを可能にするシグナルに関する文書を改善しました。 (issue 4295, issue 4390)PyPI エントリには、文書とソースコードとリポジトリとIssue Trackerへのリンクが含まれるようになりました。 (issue 4456)
文書の curl2scrapy サービスについて説明を加えました。 (issue 4206, issue 4455)
Python 2 でのみ動作する Guppy ライブラリへの参照を削除しました (issue 4285, issue 4343)
InterSphinx の拡張を使用して Python 3 文書へリンクするようになりました (issue 4444, issue 4445)
Sphinx 3.0 以降のサポートを追加 (issue 4475, issue 4480, issue 4496, issue 4503)
品質保証¶
削除された古い設定の使用に関する警告を削除 (issue 4404)
Twisted 19.7.0 以降の
twisted.test.proto_helpers
からStringTransport
をインポートすることに関する警告を削除しました (issue 4409)古い Debian パッケージ ビルド ファイルを削除 (issue 4384)
基底クラスとしての
object
の使用を削除 (issue 4430)サポートされなくなった古いバージョンの Twisted のサポートを追加したコードを削除しました (issue 4472)
コード・スタイルの問題を修正 (issue 4468, issue 4469, issue 4471, issue 4481)
twisted.internet.defer.returnValue()
関数の削除 (issue 4443, issue 4446, issue 4489)
Scrapy 2.0.1 (2020-03-18)¶
Response.follow_all
は入力として空のURLの反復可能なオブジェクト(iterable)をサポートするようになりました (issue 4408, issue 4420)トップレベルの
reactor
インポートを削除して、TWISTED_REACTOR
を使用して別の Twisted リアクターを設定するときに間違った Twisted リアクターがインストールされるというエラーを防止しました。 (issue 4401, issue 4406)修正されたテスト (issue 4422)
Scrapy 2.0.0 (2020-03-03)¶
ハイライト:
Python2のサポートは削除されました
新
Response.follow_all
メソッドメディア・パイプラインのための FTPサポート
新
Response.certificate
属性DNS_RESOLVER
による IPv6 サポート
後方互換性のない変更¶
Python 2 のサポートは、 Python 2 end-of-life on January 1, 2020 (訳注:2020年1月 1日のPython2のサポート終了)に伴い削除されました。 (issue 4091, issue 4114, issue 4115, issue 4121, issue 4138, issue 4231, issue 4242, issue 4304, issue 4309, issue 4373)
再試行ギブアップ(
RETRY_TIMES
を参照) は、デバッグ情報ではなくエラーとしてログに記録されるようになりました (issue 3171, issue 3566)LinkExtractor
がデフォルトで無視するファイル拡張子には、7z
,7zip
,apk
,bz2
,cdr
,dmg
,ico
,iso
,tar
,tar.gz
,webm
,xz
が含まれるようになりました。 (issue 1837, issue 2067, issue 4066)METAREFRESH_IGNORE_TAGS
設定は、Web ブラウザの動作に従って、デフォルトでは空のリストになりました。 (issue 3844, issue 4311)HttpCompressionMiddleware
は、今や Web ブラウザの動作 (issue 4293) に従って、設定するAccept-Encoding
ヘッダーの値にコンマの後にスペースを含めるようになりました (issue 4293)カスタム・ダウンロード・ハンドラーの
__init__
メソッド(DOWNLOAD_HANDLERS
参照)または以下のダウンローダー・ハンドラのサブクラスは、settings
パラメータを受け取りません:scrapy.core.downloader.handlers.datauri.DataURIDownloadHandler
scrapy.core.downloader.handlers.file.FileDownloadHandler
from_settings
またはfrom_crawler
クラスメソッドを使用して、そのようなパラメータをカスタム・ダウンロード・ハンドラーに公開します。scrapy.core.scheduler.Scheduler
クラスと関連するキュー・クラス(SCHEDULER_PRIORITY_QUEUE
とSCHEDULER_DISK_QUEUE
とSCHEDULER_MEMORY_QUEUE
参照)をリファクタリングして、カスタム・スケジューラ・キュー・クラス群の実装を容易にしました。 詳細については、以下の スケジューラー・キュー・クラス群の変更 を参照してください。オーバーライドされた設定は、異なる形式でログに記録されるようになりました。 これは、起動時にログに記録された同様の情報とより一致しています (issue 4199)
非推奨による削除¶
Scrapy シェル は sel プロキシー・オブジェクトを提供しなくなりました。代わりに
response.selector
を使用してください (issue 4347)LevelDBのサポートを削除(issue 4112)。
次の関数が
scrapy.utils.python
から削除されました:isbinarytext
,is_writable
,setattr_default
,stringify_dict
(issue 4362)
非推奨¶
SCRAPY_
で始まる環境変数を使用して設定をオーバーライドすることは非推奨です (issue 4300, issue 4374, issue 4375)scrapy.linkextractors.FilteringLinkExtractor
は非推奨になりました。代わりにscrapy.linkextractors.LinkExtractor
を使って下さい。 (issue 4045)プロキシーURL の
noconnect
クエリ文字列引数は非推奨となり、プロキシ URL から削除する必要があります (issue 4198)scrapy.utils.python.MutableChain
クラスのnext
メソッドは非推奨になりました。代わりに、グローバルのnext()
関数または、MutableChain.__next__
を使って下さい。 (issue 4153)
新機能¶
Python の コルーチン構文 の 部分サポート と、
asyncio
やasyncio
で駆動されるライブラリの 実験的サポート を追加しました。 (issue 4010, issue 4259, issue 4269, issue 4270, issue 4271, issue 4316, issue 4318)新しい
Response.follow_all
メソッドはResponse.follow
と同じ機能を提供しますが、入力としてURL反復可能なオブジェクト(iterable)をサポートします。そしてリクエストの反復可能オブジェクト(iterable)を返します (issue 2582, issue 4057, issue 4286)メディア・パイプライン が FTPストレージ をサポートするようになりました (issue 3928, issue 3961)
新しい
Response.certificate
属性は、サーバーの SSL 証明書を HTTPS レスポンスのtwisted.internet.ssl.Certificate
オブジェクトとして公開します (:issue:` 2726`, issue 4054)新しい
DNS_RESOLVER
設定により、IPv6 サポートを有効にできます (issue 1031, issue 4227)新しい
SCRAPER_SLOT_MAX_ACTIVE_SIZE
設定により、処理中のレスポンス・データの合計が多すぎる場合にリクエストのダウンロードを一時停止する既存のソフトリミット(soft limit)を構成できます (issue 1410, issue 3551)新しい
TWISTED_REACTOR
設定により、Scrapy が使用するreactor
をカスタマイズでき、 asyncioのサポートを有効にする か、 一般的なmacOSの問題 に対処できます。 (issue 2905, issue 4294)スケジューラの、ディスクとメモリのキューは、クラスメソッド
from_crawler
またはfrom_settings
を使用できるようになりました (issue 3884)新
Response.cb_kwargs
属性は、Response.request.cb_kwargs
へのショートカットとして機能します (issue 4331)Response.follow
はRequest
との一貫性のためにflags
パラメータをサポートするようになりました。 (issue 4277, issue 4279)Itemローダー・プロセッサ は通常の関数になり、メソッドである必要はなくなりました (issue 3899)
Rule
は今やerrback
パラメータを受け入れます (issue 4000)Request
はerrback
パラメータが指定されているときにcallback
パラメータを必要としなくなりました (issue 3586, issue 4008)LogFormatter
はいくつかの追加メソッドをサポートするようになりました:ダウンロード・エラーのための
download_error
アイテム・パイプライン でアイテムの処理中に発生した例外のための
item_error
スパイダー・コールバック で発生した例外のための
spider_error
FEED_URI
設定がpathlib.Path
値をサポートするようになりました (issue 3731, issue 4074)リクエストがダウンローダーを離れると、新しい
request_left_downloader
シグナルが送信されます (issue 4303)Scrapy は
yield
を使用するが、値も返すリクエスト・コールバックまたはエラーバックを検出すると警告をログに記録します。 (issue 3484, issue 3869)Spider
オブジェクトは、start_urls
属性を持たず、start_requests
を再実装せずにstart_url
属性を持つ場合、AttributeError
例外を送出するようになりました。 (issue 4133, issue 4170)BaseItemExporter
サブクラスは、その__init__
メソッドでself._configure(kwargs)
の代わりにsuper().__init__(**kwargs)
を使用できるようになりました。 必要に応じてdont_fail=True
を親の__init__
メソッドに渡し、親の__init__
メソッドを呼び出した後にself._kwargs
でkwargs
にアクセスします (:issue:` 4193`, issue 4370)scrapy.utils.request.request_fingerprint()
の新しいkeep_fragments
パラメータにより、URL に異なるフラグメントを持つリクエストに対して異なるフィンガー・プリントを生成できます (issue 4104)ダウンロードハンドラ (
DOWNLOAD_HANDLERS
参照) は、他の Scrapy コンポーネントがすでにサポートしているfrom_settings
およびfrom_crawler
クラス・メソッドを使用できるようになりました (issue 4126)scrapy.utils.python.MutableChain.__iter__
はself
を返すようになり、シーケンスとして使用できるようになりました( allowing it to be used as a sequence )。 (issue 4153)
バグ修正¶
crawl
コマンドは、クロールの開始前に例外が発生した場合にも終了コード 1 で終了するようになりました (issue 4175, issue 4207)LinkExtractor.extract_links
は UTF-8 以外のレスポンスからクエリ文字列または URL を再エンコードしなくなりました (issue 998, :issue :1403, issue 1949, issue 4321)最初のスパイダーミドルウェア(
SPIDER_MIDDLEWARES
参照) は、ジェネレーターであるコールバックから発生した例外も処理するようになりました。 (issue 4260, issue 4272)3 つのスラッシュ (
///
) で始まる URL へのリダイレクトがサポートされるようになりました (issue 4032, issue 4042)Request
は、コロンがあるという理由だけで文字列をurl
として受け入れなくなりました (issue 2552, issue 4094)正しいエンコーディングが
MailSender
のアタッチ名に使用されるようになりました (issue 4229, issue 4239)DUPEFILTER_CLASS
のデフォルトであるRFPDupeFilter
は Windows の各行に余分な\r
文字を書き込まなくなりました。これによりプラットフォーム上でrequests.seen
ファイルのサイズが不必要に大きくなっていました。 (issue 4283)Zシェルの自動補完は
.http
ファイルではなく.html
ファイルを検索し、-h
コマンドラインスイッチをカバーするようになりました。 (issue 4122, issue 4291)limit
が定義されていないscrapy.utils.datatypes.LocalCache
オブジェクトにアイテムを追加しても、もはやTypeError
例外が発生することはありません。 (issue 4123)scrapy.utils.misc.create_instance()
がsettings
とcrawler
の両方をNone
に設定したときに発生するValueError
例外のメッセージのタイプミスを修正しました ( issue 4128)
文書¶
API ドキュメントは、対応するソース コードのオンラインの構文強調表示にリンクするようになりました (issue 4148)
存在しないドキュメント・ページへのリンクにより、サイドバーにアクセスできるようになりました (issue 4152, issue 4169)
ドキュメント内の相互参照は、カーソルを合わせるとツールチップを表示するようになりました (issue 4173, issue 4183)
LinkExtractor.extract_links
に関する文書を改善し、 リンク抽出器(link extractors) を簡素化しました。 (issue 4045)ItemLoader.item
の動作方法を明確化 (issue 3574, issue 4099)CrawlerProcess
も使用する場合はlogging.basicConfig()
を使用すべきではないことを明確にしました。 (issue 2149, issue 2352, issue 3146, issue 3960)永続性を使用する時 の
Request
オブジェクトの要件を明確にしました (issue 4124, issue 4139)カスタム・イメージ・パイプライン のインストール方法を明確化 (issue 4034, issue 4252)
メディア・パイプライン の例の
file_path
メソッドのシグネチャを修正 (issue 4290)カスタムの
scrapy.core.scheduler.Scheduler
サブクラスに影響する Scrapy 1.7.0 の後方互換性のない変更をカバーしました (issue 4274)README.rst
とCODE_OF_CONDUCT.md
ファイルを改善 (issue 4059)文書内の例がテスト・スイートの一部としてチェックされ、検出された問題の一部が修正されました。 (issue 4142, issue 4146, issue 4171, issue 4184, issue 4190)
ロジックの問題、リンク切れ、タイプミスを修正 (issue 4247, issue 4258, issue 4282, issue 4288, issue 4305, issue 4308, issue 4323, issue 4338, issue 4359, issue 4361)
オブジェクトの
__init__
メソッドを参照する際の一貫性を改善 (issue 4086, issue 4088)Scrapyを3行で説明シル でのコードと出力の不一致を修正しました (issue 4213)
intersphinx
の使用法を拡張した (issue 4147, issue 4172, issue 4185, issue 4194, issue 4197)我々は今や最新バージョンの Python を使用して文書を作成しています (issue 4140, issue 4249)
ドキュメントの整理 (issue 4143, issue 4275)
品質保証¶
プロキシー
CONNECT
テストを再有効化 (issue 2545, issue 4114)Bandit セキュリティ・チェックをテスト・スイートに追加 (issue 4162, issue 4181)
Flake8 スタイル・チェックをテスト・スイートに追加し、対応する変更の多くを適用しました。 (issue 3944, issue 3945, issue 4137, issue 4157, issue 4167, issue 4174, issue 4186, issue 4195, issue 4238, issue 4246, issue 4355, issue 4360, issue 4365)
テストカバレッジの改善(issue 4097, issue 4218, issue 4236)。
最も遅いテストの報告を開始し、それらのいくつかのパフォーマンスを改善しました (issue 4163, issue 4164)
壊れたテストを修正し、いくつかのテストをリファクタリングしました (issue 4014, issue 4095, issue 4244, issue 4268, issue 4372)
tox 設定を変更して、任意の Python バージョンでテストを実行できるようにし、 Bandit および Flake8 テストをデフォルトで実行し、最小の tox バージョンをプログラムで強制します (issue 4179)
コードを整理 (issue 3937, issue 4208, issue 4209, issue 4210, issue 4212, issue 4369, issue 4376, issue 4378)
スケジューラー・キュー・クラス群の変更¶
以下の変更は、すべての型のカスタム・キュー・クラスに影響を与える可能性があります:
push
メソッドは、もはやrequest.priority * -1
を含む 2 番目の位置パラメータを受け取りません。 その値が必要な場合は、代わりに最初の位置パラメータrequest
から取得するか、scrapy.core.scheduler.ScrapyPriorityQueue
サブクラスの新しいpriority()
メソッドを使用してください。
次の変更は、カスタム・プライオリティ・キュー・クラスに影響する可能性があります:
__init__
メソッドまたはfrom_crawler
またはfrom_settings
クラスメソッド内で:以前はファクトリ関数
qfactory
を含んでいたパラメータが、downstream_queue_cls
という名前のキーワード・パラメータとして渡されるようになりました。新しいキーワード・パラメータが追加されました:
key
これは、メモリ・キューでは常に空の文字列であり、ディスク・キューではJOB_DIR
値を示す文字列です。以前のクロールのデータを含むディスク・キューのパラメータ、
startprios
またはslot_startprios
は、startprios
という名前のキーワード・パラメータとして渡されるようになりました。serialize
パラメータは渡されなくなりました。 ディスク・キュー・クラスは、scrapy.utils.reqser
モジュールのrequest_to_dict()
とrequest_from_dict()
関数を使用して、ディスクに書き込む前にリクエストのシリアル化を処理する必要があります。
以下の変更は、カスタムの ディスクおよびメモリの キュー・クラスに影響を与える可能性があります:
__init__
メソッドのシグネチャは今や__init__(self, crawler, key)
です。
以下の変更は、特に scrapy.core.scheduler
の ScrapyPriorityQueue
と DownloaderAwarePriorityQueue
クラスと、そのサブクラスに影響を与える可能性があります:
__init__
メソッドでは、上記の変更のほとんどが適用されます。__init__
は引き続きすべてのパラメータを位置パラメータとして受け取りますが、以下のようになります:qfactory
を置き換えたdownstream_queue_cls
は、別の方法でインスタンス化する必要があります。qfactory
は優先値 (整数) でインスタンス化されました。downstream_queue_cls
のインスタンスは、新しいScrapyPriorityQueue.qfactory
またはDownloaderAwarePriorityQueue.pqfactory
メソッドを使用して作成する必要があります。新しい
key
パラメータは、startprios
パラメータ 1 の位置を右に移動しました。
以下のクラス属性が追加されました:
crawler
downstream_queue_cls
(詳細上記)key
(詳細上記)
serialize
属性は削除されました (詳細上記)
以下の変更は特に ScrapyPriorityQueue
クラスとそのサブクラスに影響を与える可能性があります:
新しい
priority()
メソッドが追加されました。このメソッドはリクエストを与えるとrequest.priority * -1
を返します。これは
push()
で使用され、そのpriority
パラメータの削除を補います。spider
属性は削除されました。 代わりにcrawler.spider
を使用してください。
以下の変更は特に DownloaderAwarePriorityQueue
クラスとそのサブクラスに影響を与える可能性があります:
新しい
pqueues
属性は、ダウンローダー・スロット名をdownstream_queue_cls
の対応するインスタンスにマッピングします。
Scrapy 1.8.0 (2019-10-28)¶
ハイライト:
Python 3.4 のサポートを廃止し、最小要件を更新しました。公式に Python 3.8 をサポートをしました
新
Request.from_curl
クラス・メソッド新
ROBOTSTXT_PARSER
andROBOTSTXT_USER_AGENT
設定新
DOWNLOADER_CLIENT_TLS_CIPHERS
設定 とDOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING
設定
後方互換性のない変更¶
Python 3.4 はサポートされなくなり、Scrapy の最小要件の一部も変更されました:
cssselect 0.9.1
cryptography 2.0
lxml 3.5.0
pyOpenSSL 16.2.0
queuelib 1.4.2
service_identity 16.0.0
six 1.10.0
Twisted 17.9.0 (16.0.0 with Python 2)
zope.interface 4.1.3
JSONRequest
は類似のクラスとの一貫性のためにJsonRequest
と呼ばれるようになりました (issue 3929, issue 3982)カスタム・コンテキスト・ファクトリ(
DOWNLOADER_CLIENTCONTEXTFACTORY
)を使用している場合、その__init__
メソッドは2つの新しいパラメータを受け入れる必要があります。それはtls_verbose_logging
とtls_ciphers
です。 (issue 2111, issue 3392, issue 3442, issue 3450)ItemLoader
は入力項目の値をリストに変換します:>>> item = MyItem() >>> item['field'] = 'value1' >>> loader = ItemLoader(item=item) >>> item['field'] ['value1']
これは、既存のフィールド(
loader.add_value('field', 'value2')
)に値を追加できるようにするために必要です。(issue 3804, issue 3819, issue 3897, issue 3976, issue 3998, issue 4036)
下記の 非推奨による削除 も参照してください。
新機能¶
新
Request.from_curl
クラス・メソッドを使用すると、 cURLコマンドからのリクエストの作成 が可能になります (issue 2985, issue 3862)新しい
ROBOTSTXT_PARSER
設定により、使用する robots.txt パーサーを選択できます。 これには、 RobotFileParser と Protego (デフォルト)と Reppy と Robotexclusionrulesparser の組み込みサポートが含まれており、そして、あなたは 追加のパーサーのサポートを実装する ことができます。 (issue 754, issue 2669, issue 3796, issue 3935, issue 3969, issue 4006)新しい
ROBOTSTXT_USER_AGENT
設定により、robots.txt 解析に使用する個別のユーザー・エージェント文字列を定義できます (issue 3931, issue 3966)Rule
はもはやLinkExtractor
パラメータを必要としません (issue 781, issue 4016)新しい
DOWNLOADER_CLIENT_TLS_CIPHERS
設定を使用して、デフォルトの HTTP/1.1 ダウンローダーで使用される TLS/SSL 暗号をカスタマイズします (issue 3392, issue 3442)新しい
DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING
設定をTrue
に設定して、HTTPS 接続の確立後に TLS 接続パラメータに関するデバッグレベルのメッセージを有効にします (issue 2111, issue 3450)キーワード引数を受け取るコールバック(
Request.cb_kwargs
参照)は、新しい@cb_kwargs
スパイダー規約 を使用してテストできるようになりました。 (issue 3985, issue 3988)@scrapes
スパイダー規約が失敗した場合、欠落しているすべてのフィールドが報告されるようになりました (issue 766, issue 3939)カスタム・ログ・フォーマット は、構成された
LOG_FORMATTER
の対応するメソッドがNone
を返すようにすることで、メッセージをドロップできるようになりました。 (issue 3984, issue 3987)大幅に改善された完了定義(completion definition)が Zsh で利用できるようになりました (issue 4069)
バグ修正¶
ItemLoader.load_item()
は、後でItemLoader.get_output_value()
を呼び出したりすることはなくなりました。また、ItemLoader.load_item()
が空のデータを返したりすることはなくなりました。 (issue 3804, issue 3819, issue 3897, issue 3976, issue 3998, issue 4036)DummyStatsCollector
がTypeError
例外を発生させる問題を修正しました (issue 4007, issue 4052)FilesPipeline.file_path
とImagesPipeline.file_path
は、もはやIANAに登録( registered with IANA )されてい無いファイル拡張子を選択しなくなりました (issue 1287, issue 3953, issue 3954)botocore を使用してS3でファイルを永続化する場合、botocoreでサポートされているすべてのヘッダーが適切にマッピングされるようになりました (issue 3904, issue 3905)
パーセントエスケープ文字を含む
FEED_URI
のFTPパスワードが正しくデコードされるようになりました (issue 3941)scrapy.utils.ssl.get_temp_key_info()
のメモリ処理とエラー処理の問題が修正されました (issue 3920)
文書¶
文書では、 カスタム・ログ書式 を定義および構成する方法について説明しています (issue 3616, issue 3660)
MarshalItemExporter
とPythonItemExporter
のAPI文書を追加しました (issue 3973)BaseItem
とItemMeta
のAPI文書を追加しました (issue 3999)ドキュメントの些末な修正 (issue 2998, issue 3398, issue 3597, issue 3894, issue 3934, issue 3978, issue 3993, issue 4022, issue 4028, issue 4033, issue 4046, issue 4050, issue 4055, issue 4056, issue 4061, issue 4072, issue 4071, issue 4079, issue 4081, issue 4089, issue 4093)
非推奨による削除¶
scrapy.xlib
は削除されました (issue 4015)
非推奨¶
HttpCacheMiddleware
の LevelDB ストレージ・バックエンド (scrapy.extensions.httpcache.LeveldbCacheStorage
) は非推奨です (issue 4085, issue 4092)文書化されていない
SCRAPY_PICKLED_SETTINGS_TO_OVERRIDE
環境変数の使用は非推奨です (issue 3910)scrapy.item.DictItem
は非推奨です。代わりにItem
を使って下さい (issue 3999)
その他の変更¶
継続的インテグレーション・テストの対象となる、オプションなScrapy要件で必要となる各最小バージョンが更新されました:
これらのオプション要件の下位バージョンは機能する可能性がありますが、保証されていません (issue 3892)
バグレポートと機能リクエスト用のGitHubテンプレート (issue 3126, issue 3471, issue 3749, issue 3754)
継続的インテグレーションの修正 (issue 3923)
コード整理 (issue 3391, issue 3907, issue 3946, issue 3950, issue 4023, issue 4031)
Scrapy 1.7.4 (2019-10-21)¶
いくつかの望ましくない副作用がある issue 3804 の修正( issue 3819 )を元に戻します。 (issue 3897, issue 3976)
その結果、アイテム・ローダーがアイテムで初期化されると、 ItemLoader.load_item()
は、後で ItemLoader.get_output_value()
を呼び出すか、または ItemLoader.load_item()
が空のデータを返します。
Scrapy 1.7.3 (2019-08-01)¶
Python 3.4では lxml 4.3.5以下を強制する(issue 3912, issue 3918)
Scrapy 1.7.2 (2019-07-23)¶
Python 2 サポートを修正(issue 3889, issue 3893, issue 3896).
Scrapy 1.7.1 (2019-07-18)¶
Scrapy 1.7.0の再パッケージ化。PyPIの一部の変更が欠落していました。
Scrapy 1.7.0 (2019-07-18)¶
注釈
Scrapy 1.7.1を必ずインストールしてください。 PyPIのScrapy 1.7.0パッケージは誤ったコミットタグ付けの結果であり、以下で説明するすべての変更が含まれていません。
ハイライト:
複数のドメインをターゲットとするクロールの改善
引数をコールバックに渡すよりクリーンな方法
JSONリクエストの新しいクラス
ルールベースのスパイダーの改善
フィード・エクスポートの新機能
後方互換性のない変更¶
429
はデフォルトでRETRY_HTTP_CODES
設定の一部になりましたこの変更は 後方互換性がありません 。
429
を再試行したくない場合は、それに応じてRETRY_HTTP_CODES
をオーバーライドする必要があります。Crawler
とCrawlerRunner.crawl
とCrawlerRunner.create_crawler
は、もはやSpider
のサブクラスのインスタンスを受け入れなくなり、Spider
サブクラスのみを受け入れます。〜scrapy.spiders.Spider
サブクラスのインスタンスは実行することを意図していなかったため、期待どおりに機能していませんでした。渡された〜scrapy.spiders.Spider
サブクラスのインスタンスを使用する代わりに、〜scrapy.spiders.Spider.from_crawler
メソッドは、新しいインスタンスを生成するために呼び出されました。SCHEDULER_PRIORITY_QUEUE
設定のデフォルト以外の値が機能しなくなる場合があります。 スケジューラープライオリティキュークラスは、任意のPythonデータ構造ではなく〜scrapy.http.Request
オブジェクトを処理する必要があります。Scheduler
クラスの__init__
メソッドに追加のcrawler
パラメーターが追加されました。 その `` __init__``メソッドで任意のパラメーターを受け入れてないカスタム・スケジューラ・サブクラスは、この変更により破損する可能性があります。詳細については、
SCHEDULER
を参照してください。
下記の 非推奨による削除 も参照してください。
新機能¶
新しいスケジューラーの優先度キュー
scrapy.pqueues.DownloaderAwarePriorityQueue
は、 enabled で、CONCURRENT_REQUESTS_PER_IP
をサポートしないという犠牲を払えば、複数のWebドメインをターゲットとするクロールのスケジューリングを大幅に改善できます。新しい
Request.cb_kwargs
属性は、キーワード引数をコールバック・メソッドに渡すよりクリーンな方法を提供します (issue 1138, issue 3563)新しい
JSONRequest
クラスは、JSONリクエストを作成するより便利な方法を提供します (issue 3504, issue 3505)Rule
の__init__
メソッドに渡されたprocess_request
コールバックは、2番目の引数として、リクエストを産み出したResponse
オブジェクトを受け取るようになりました (issue 3682)LinkExtractor
の `` __init__`` メソッドの新しいrestrict_text
パラメーターにより、リンクテキストによりリンクをフィルタリングできます (issue 3622, issue 3635)新しい
FEED_STORAGE_S3_ACL
設定により、Amazon S3にエクスポートされたフィードのカスタムACLを定義できます (issue 3607)新しい
FEED_STORAGE_FTP_ACTIVE
設定により、FTPサーバーにエクスポートされたフィードにFTPのアクティブ接続モードを使用できるようになります (issue 3829)新しい
METAREFRESH_IGNORE_TAGS
設定により、リダイレクトをトリガーするHTMLメタタグのレスポンスを検索するときに無視されるHTMLタグをオーバーライドできます (issue 1422, issue 3768)新しい
redirect_reasons
リクエスト・メタ・キーは、後続のすべてのリダイレクトの背後にある理由(ステータスコード、メタリフレッシュ)を公開します (issue 3581, issue 3687)check
コマンドの実行中にSCRAPY_CHECK` `変数が ``true
文字列に設定されるようになりました。これにより、 コードから規約チェックの実行を検出 できます。 (issue 3704, issue 3739)新しい
Item.deepcopy()
メソッドにより、 アイテムのディープ・コピー が簡単になります (issue 1493, issue 3671)CoreStats
もまたelapsed_time_seconds
をログに記録します (issue 3638)ItemLoader
の 入出力プロセッサ の例外がより饒舌(verbose)になりました (issue 3836, issue 3840)Crawler
とCrawlerRunner.crawl
とCrawlerRunner.create_crawler
はそれ自身のサブクラス自体ではなくSpider
サブクラスのインスタンスを受け取った場合、正常に失敗するようになりました (issue 2283, issue 3610, issue 3872)
バグ修正¶
process_spider_exception()
は今やジェネレーターに対しても呼び出されるようになりました (issue 220, issue 2061)KeyboardInterrupt のようなシステム例外はキャッチされなくなりました (issue 3726)
ItemLoader.load_item()
は、後でItemLoader.get_output_value()
を呼び出したり、ItemLoader.load_item()
が空のデータを返したりすることは無くなりました (issue 3804, issue 3819)画像パイプライン (
ImagesPipeline
) は、以下のAmazon S3設定を無視しなくなりました。AWS_ENDPOINT_URL
,AWS_REGION_NAME
,AWS_USE_SSL
,AWS_VERIFY
(issue 3625)scrapy.pipelines.media.MediaPipeline
のメモリリークを修正しました。たとえば、200以外のレスポンスや、カスタム・ミドルウェアからの例外に影響します (issue 3813)プライベート・コールバックを含むリクエストは、ディスクから正しく逆シリアル化されなくなりました (issue 3790)
FormRequest.from_response()
は、主要なWebブラウザ風の不正なメソッドを処理するようになりました (issue 3777, issue 3794)
文書¶
新しいトピック 動的に読み込まれたコンテンツの選択 動的にロードされたデータを読み取るための推奨アプローチを網羅しています (issue 3703)
広範なクロール に、メモリ使用量に関する情報が表示されるようになりました (issue 1264, issue 3866)
Rule
の文書では、CrawlSpider
を使用するときにリンクのテキストにアクセスする方法について説明しています (issue 3711, issue 3712)新しい節 あなた自身のストレージ・バックエンドを書く では、
HttpCacheMiddleware
のカスタム・キャッシュ・ストレージバック・エンドの作成について説明しています (issue 3683, issue 3692)新しい FAQ 項目の アイテム・パイプラインでアイテムを複数のアイテムに分割する方法は? では、アイテム・パイプラインからアイテムを複数のアイテムに分割する場合の対処方法を説明しています (issue 2240, issue 3672)
クロール順序に関するFAQ項目 を更新して、最初のいくつかのリクエストが目的の順序にほとんど従わない理由を説明しました (issue 1739, issue 3621)
LOGSTATS_INTERVAL
設定 (issue 3730) と、FilesPipeline.file_path
・ImagesPipeline.file_path
メソッド (issue 2253, issue 3609) とCrawler.stop()
method (issue 3842) が文書化されました紛らわしい、または誤解を招く可能性のある文書の一部がより明確になりました (issue 1347, issue 1789, issue 2289, issue 3069, issue 3615, issue 3626, issue 3668, issue 3670, issue 3673, issue 3728, issue 3762, issue 3861, issue 3882)
些末な文書の修正 (issue 3648, issue 3649, issue 3662, issue 3674, issue 3676, issue 3694, issue 3724, issue 3764, issue 3767, issue 3791, issue 3797, issue 3806, issue 3812)
非推奨による削除¶
次の非推奨APIは削除されました(issue 3578):
scrapy.conf
(Crawler.settings
を使用して下さい)scrapy.core.downloader.handlers
について:http.HttpDownloadHandler
(http10.HTTP10DownloadHandler
を使用して下さい)
scrapy.loader.ItemLoader._get_values
(_get_xpathvalues
を使用して下さい)scrapy.loader.XPathItemLoader
(ItemLoader
を使用して下さい)scrapy.log
(ロギング(logging) 参照)scrapy.pipelines
について:files.FilesPipeline.file_key
(file_path
を使用して下さい)images.ImagesPipeline.file_key
(file_path
を使用して下さい)images.ImagesPipeline.image_key
(file_path
を使用して下さい)images.ImagesPipeline.thumb_key
(thumb_path
を使用して下さい)
scrapy.selector
とscrapy.selector.lxmlsel
の両方より:scrapy.selector.csstranslator
より:ScrapyGenericTranslator
( parsel.csstranslator.GenericTranslator を使用して下さい)ScrapyHTMLTranslator
( parsel.csstranslator.HTMLTranslator を使用して下さい)ScrapyXPathExpr
( parsel.csstranslator.XPathExpr を使用して下さい)
Selector
より:`` _root`` (
__init__
メソッド引数とオブジェクト・プロパティの両方で、root
を使用します)extract_unquoted
(getall
を使用して下さい)select
(xpath
を使用して下さい)
SelectorList
より:extract_unquoted
(getall
を使用して下さい)select
(xpath
を使用して下さい)x
(xpath
を使用して下さい)
scrapy.spiders.BaseSpider
(Spider
を使用して下さい)Spider
(と、そのサブクラス)より:DOWNLOAD_DELAY
(download_delay を使用して下さい)set_crawler
(from_crawler()
を使用して下さい)
scrapy.spiders.spiders
(SpiderLoader
を使用して下さい)scrapy.telnet
(scrapy.extensions.telnet
を使用して下さい)scrapy.utils.python
より:str_to_unicode
(to_unicode
を使用して下さい)unicode_to_str
(to_bytes
を使用して下さい)
scrapy.utils.response.body_or_str
また、以下の非推奨の設定も削除されました(issue 3578):
SPIDER_MANAGER_CLASS
(SPIDER_LOADER_CLASS
を使用して下さい)
非推奨¶
SCHEDULER_PRIORITY_QUEUE
設定のqueuelib.PriorityQueue
値は非推奨です。代わりにscrapy.pqueues.ScrapyPriorityQueue
を使って下さい。2つの引数を受け入れない
Rule
に渡されるprocess_request
コールバックは非推奨です。以下のモジュールは非推奨です:
scrapy.utils.http
(w3lib.http を使用して下さい)scrapy.utils.markup
(w3lib.html を使用して下さい)scrapy.utils.multipart
(urllib3 を使用して下さい)
scrapy.utils.datatypes.MergeDict
クラスは、Python3コードベースでは非推奨です。 代わりにChainMap
を使用してください。 (issue 3878)scrapy.utils.gz.is_gzipped
関数は非推奨です。代わりにscrapy.utils.gz.gzip_magic_number
を使って下さい。
その他の変更¶
同じ tox 環境からすべてのテストを並行して実行できるようになりました。文書では、 テストを実行する方法あれこれ について説明しています。 (issue 3707)
APIドキュメントカバレッジレポートを生成できるようになりました (issue 3806, issue 3810, issue 3860)
文書ポリシー では、 PEP 257 に従った docstrings (issue 3701) が必要になりました (issue 3748)
内部修正と整理 (issue 3629, issue 3643, issue 3684, issue 3698, issue 3734, issue 3735, issue 3736, issue 3737, issue 3809, issue 3821, issue 3825, issue 3827, issue 3833, issue 3857, issue 3877)
Scrapy 1.6.0 (2019-01-30)¶
ハイライト:
より良いWindowsサポート;
Python3.7との互換性;
.extract_first()
+.extract()
APIから.get()
+.getall()
APIへの切り替えを含む、文書の大幅な改善。フィードのエクスポート、FilePipelineおよびMediaPipelineの改善;
より優れた拡張性
item_error
とrequest_reached_downloader
、それは フィード・エクスポーターとフィード・ストレージと重複フィルターでのfrom_crawler
サポート。scrapy.contracts
の修正と新機能;telnetコンソールのセキュリティの改善。最初に Scrapy 1.5.2 (2019-01-22) へのバックポートとしてリリースされました;
非推奨のコードの整理;
コードベース全体でのさまざまなバグ修正、小さな新機能、および使いやすさの向上。
セレクターAPI変更¶
これらはScrapy自体の変更ではなく、Scrapyがxpath/cssセレクターに使用する parsel ライブラリの変更ですが、これらの変更はここで言及する価値があります。Scrapyは現在 parsel>=1.5 に依存しており、Scrapyのドキュメントは最近の parsel
API規則に従うように更新されています。
最も目に見える変更は、 .get()
と .getall()
セレクター・メソッドが .extract_first()
と .extract()
よりも優先されるようになったことです。 これらの新しいメソッドにより、コードがより簡潔で読みやすくなると考えています。 詳細については、 extract() と extract_first() を参照してください。
注釈
現時点では .extract()
と .extract_first()
メソッドを非推奨にする 計画 はありません。
もう1つの便利な新機能は、 Selector.attrib
プロパティと SelectorList.attrib
プロパティの導入です。これにより、HTML要素の属性を簡単に取得できます。 要素属性の選択 を参照してください。
parsel >= 1.5 ではCSSセレクターはキャッシュされるため、同じCSSパスが何度も使用されると高速になります。これは、Scrapyスパイダーではとてもよくあるケースです。コールバックは通常、異なるページで複数回呼び出されます。
カスタム Selector
または SelectorList
サブクラスを使用している場合、parselの 後方互換性のない 変更がコードに影響する可能性があります。 詳細な説明と改善点の完全なリストについては、 parsel changelog を参照してください。
Telnetコンソール¶
下位互換性なし : Scrapyのtelnetコンソールには、ユーザー名とパスワードが必要になりました。詳細については、 Telnetコンソール を参照してください。この変更により、 セキュリティの問題 が修正されます。詳細については、 Scrapy 1.5.2 (2019-01-22) リリースノートを参照してください。
新しい拡張機能¶
from_crawler
サポートがフィード・エクスポーターとフィード・ストレージに追加されました。 これにより、特に、カスタム・フィードのストレージおよびエクスポーターからScrapy設定にアクセスできます (issue 1605, issue 3348).from_crawler
サポートがdupefiltersに追加されました (issue 2956) 。これにより、例えば、dupefilterから設定またはスパイダーにアクセスできます。item_error
パイプラインでエラーが発生したときに発生します (issue 3256) ;request_reached_downloader
ダウンローダーが新しいリクエストを取得したときに発生します。この信号は、例えばカスタム・スケジューラに便利です。 (issue 3393).新しい SitemapSpider である
sitemap_filter()
メソッド。これにより、SitemapSpiderサブクラスの属性に基づいてサイト・マップ・エントリを選択できます (issue 3512).ダウンローダー・ハンドラーの遅延読み込みはオプションになりました。これにより、カスタムダウンローダー・ハンドラーでの初期化エラー処理が向上します。 (issue 3394)
新しい FilePipeline ・ MediaPipeline 機能¶
S3FilesStoreのその他のオプションを公開します。
AWS_ENDPOINT_URL
、AWS_USE_SSL
、AWS_VERIFY
、AWS_REGION_NAME
です。これにより、代替またはセルフホストのAWS互換プロバイダーを使用できます (issue 2609, issue 3548).Google Cloud StorageのACLサポート:
FILES_STORE_GCS_ACL
とIMAGES_STORE_GCS_ACL
(issue 3199)
scrapy.contracts
の改善¶
規約コードの例外はより適切に処理されます (issue 3377);
dont_filter = True
は規約リクエストに使用され、同じURLで異なるコールバックをテストできます (issue 3381);Contract サブクラスの
request_cls
属性を使用すると、FormRequestなどの規約でさまざまなリクエスト・クラスを使用できます (issue 3383).規約でのエラーバック(errback)処理を修正しました。例えば200以外のレスポンスを返すURLに対してコントラクトが実行される場合です (issue 3371)
使いやすさの改善¶
RobotsTxtMiddlewareの統計を追加 (issue 3100)
telnetホスト/ポートを表示するためにINFOログレベルを使用します (issue 3115)
RobotsTxtMiddlewareのIgnoreRequestにメッセージを追加 (issue 3113)
Response.follow
のurl
引数のより良い検証 (issue 3131)スパイダーの初期化でエラーが発生すると、Scrapyコマンドからゼロ以外の終了コードが返されます (issue 3226)
リンク抽出の改善: "ftp" がスキームリストに追加されました (issue 3152) 。また、 "flv" が一般的なビデオ拡張機能に追加されました (issue 3165)
エクスポータが無効になっている場合のエラーメッセージが改善されました (issue 3358);
scrapy shell --help
は、ローカルファイル(./file.html
)に必要な構文について言及しています ( issue 3496)リファラー・ヘッダー値がRFPDupeFilterログ・メッセージに追加されます (issue 3588)
バグ修正¶
Windowsでの.csvエクスポートの余分な空白行の問題を修正しました (issue 3039);
ディスク・キューのオブジェクトをシリアル化するときのPython3でのpickle化エラーの適切な処理 (issue 3082)
リクエストをコピーするときにフラグが保持されるようになりました (issue 3342);
FormRequest.from_response clickdata は、
input[type=image]
の要素を無視してはなりません (issue 3153).FormRequest.from_responseは、重複するキーを保持する必要があります (issue 3247)
文書の改善¶
文書は、.extract/.extract_first ではなく .get/.getall APIを提案するように書き直されています。 また、 セレクター 文書は、最新のparsel文書と一致するように更新および再構築されています。 要素属性の選択 や CSSセレクターの拡張機能 などのトピックがさらに含まれるようになりました (issue 3390)
Webブラウザの開発ツールを使ってスクレイピングする は、古いFirefoxとFirebugのチュートリアルに代わる新しいチュートリアルです (issue 3400)
SCRAPY_PROJECT 環境変数が文書化されました (issue 3518);
インストール手順にトラブルシューティング節が追加されました (issue 3517);
チュートリアルの初心者向けリソースへのリンクを改善しました (issue 3367, issue 3468);
文書の
RETRY_HTTP_CODES
のデフォルト値について修正 (issue 3335);文書から未使用の
DEPTH_STATS
オプションを削除 (issue 3245);他の整理 (issue 3347, issue 3350, issue 3445, issue 3544, issue 3605).
非推奨による削除¶
1.0より前のScrapyモジュール名のための互換性シム(shim)が削除されました (issue 3318):
scrapy.command
scrapy.contrib
(と、全てのサブモジュール)scrapy.contrib_exp
(と、全てのサブモジュール)scrapy.dupefilter
scrapy.linkextractor
scrapy.project
scrapy.spider
scrapy.spidermanager
scrapy.squeue
scrapy.stats
scrapy.statscol
scrapy.utils.decorator
詳細については、 モジュールの再配置 を参照するか、Scrapy1.5.xの非推奨警告による提案を利用してあなたのコードを更新してください。
他の非推奨削除:
非推奨の scrapy.interfaces.ISpiderManager は削除されました。scrapy.interfaces.ISpiderLoader を使って下さい。
非推奨の
CrawlerSettings
クラスは削除されました (issue 3327).非推奨の
Settings.overrides
とSettings.defaults
属性は削除されました(issue 3327, issue 3359).
その他の改善、クリーンアップ¶
すべてのScrapyテストがWindowsで合格するようになりました。 Scrapyテスト・スイートは、CI上のWindows環境で実行されます (issue 3315)
Python 3.7 サポート (issue 3326, issue 3150, issue 3547).
テストとCIの修正 (issue 3526, issue 3538, issue 3308, issue 3311, issue 3309, issue 3305, issue 3210, issue 3299)
scrapy.http.cookies.CookieJar.clear
は "domain" と "path" と "name" という オプション引数を受け入れます (issue 3231).追加のファイルがsdistに含まれています (issue 3495);
コードスタイル修正 (issue 3405, issue 3304);
不要な .strip() 呼び出しを削除 (issue 3519);
collections.dequeは、リストの代わりにMiddlewareManagerメソッドを格納するために使用されます (issue 3476)
Scrapy 1.5.2 (2019-01-22)¶
セキュリティのバグ修正 : Telnetコンソール拡張機能は、コンテンツを http://localhost:6023 にPOSTする不正なWebサイトによって簡単に悪用される可能性があり、Scrapyからそれを悪用する方法は見つかりませんでしたが、ブラウザをだまして悪用するのは非常に簡単であり、ローカル開発環境のリスクを高めます。
修正には下位互換性がありません ランダムに生成されたパスワードを使用して、デフォルトでtelnetユーザーパスワード認証を有効にします。すぐにアップグレードできない場合は、
TELNETCONSOLE_PORT
のデフォルト値の変更を検討してください。詳細は telnetコンソール 文書参照
botoインポート・エラーが原因で、GCE環境でのバック・ポートCIビルドの失敗。
Scrapy 1.5.1 (2018-07-12)¶
重要なバグ修正のためのメンテナンス・リリースです。新機能の追加はありません。
Python3とPyPyに影響を与えた
O(N^2)
gzip解凍の問題が修正されました (issue 3281);TLS検証エラーのスキップが改善されました (issue 3166);
Ctrl-Cの処理は Python3.5+ で修正されています (issue 3096);
テストの修正 (issue 3092, issue 3263);
文書の改善 (issue 3058, issue 3059, issue 3089, issue 3123, issue 3127, issue 3189, issue 3224, issue 3280, issue 3279, issue 3201, issue 3260, issue 3284, issue 3298, issue 3294).
Scrapy 1.5.0 (2017-12-29)¶
このリリースでは、コードベース全体に小さな新機能と改善が加えられています。 いくつかのハイライト:
Google Cloud Storageは、FilesPipelineとImagesPipelineでサポートされています。
プロキシーへの接続を再利用できるようになったため、プロキシー・サーバーを使用したクロールがより効率的になりました。
警告と例外とログのメッセージが改善され、デバッグが容易になりました。
scrapy parse
コマンドで、--meta
引数を介してカスタム・リクエスト・メタを設定できるようになりました。Python 3.6、PyPy、PyPy3との互換性が向上しました。 PyPyとPyPy3は、CIでテストを実行することにより、正式にサポートされるようになりました。
HTTP 308と522と524のステータスコードのデフォルト処理が改善されました。
毎度おなじみ文書の改善。
後方互換性の無い変更¶
Scrapy 1.5は、Python3.3のサポートを終了します。
デフォルトのScrapy User-Agentは、scrapy.orgへのhttpsリンクを使用するようになりました(issue 2983)。 これは技術的に後方互換性がありません 古い値に依存している場合は、
USER_AGENT
をオーバーライドします。custom_settings
によってオーバーライドされた設定のログが修正されました。 これは技術的に後方互換性がありません ロガーが[scrapy.utils.log]
から[scrapy.crawler]
に変更されたためです。 Scrapyログをパースしている場合は、ログパーサーを更新してください (issue 1343).LinkExtractorは、デフォルトで
m4v
拡張子を無視するようになりました。これは動作の変更です。522 と 524 のステータスコードが
RETRY_HTTP_CODES
に追加されました (issue 2851)
新機能¶
Response.follow
内で<link>
タグをサポートしました (issue 2785)ptpython
REPL をサポートしました (issue 2654)FilesPipelineとImagesPipelineに対するGoogleCloud Storageのサポート (issue 2923)
"scrapy parse" コマンドの新しい
--meta
オプションにより、追加のrequest.metaを渡すことができます (issue 2883)shell.inspect_response
を使用するときは、スパイダー変数に設定します (issue 2812)HTTP 308 恒久的リダイレクト(Permanent Redirect) の処理 (issue 2844)
RETRY_HTTP_CODES
に 522 と 524 を追加 (issue 2851)起動時のログバージョン情報 (issue 2857)
scrapy.mail.MailSender
は今や Python 3 で動作します (Twisted 17.9.0 が必要です)プロキシー・サーバーへの接続(connection)は再利用されます (issue 2743)
ダウンローダー・ミドルウェアのためのテンプレートを追加 (issue 2755)
パース・コールバックが定義されていない場合のNotImplementedErrorの明示的なメッセージ (issue 2831)
CrawlerProcessは、ルート・ログ・ハンドラーのインストールを無効にするオプションが追加されました (issue 2921)
LinkExtractorは今やデフォルトで
m4v
拡張子を無視しますDOWNLOAD_WARNSIZE
とDOWNLOAD_MAXSIZE
の制限を超えるレスポンスのログ・メッセージが改善されました (issue 2927)URLがドメインではなく
Spider.allowed_domains
に配置されたときに警告を表示します (issue 2250).
バグ修正¶
custom_settings
によって上書きされた設定のログを修正しました。 これは技術的に後方互換性がありません ロガーが[scrapy.utils.log]
から[scrapy.crawler]
に変わるため、必要に応じてログ・パーサーを更新してください (issue 1343)デフォルトのScrapy User-Agentは、scrapy.orgへのhttpsリンクを使用するようになりました(issue 2983)。 これは技術的に後方互換性がありません 古い値に依存している場合は、
USER_AGENT
をオーバーライドします。PyPyとPyPy3のテストの失敗を修正し、それらを公式にサポートします (issue 2793, issue 2935, issue 2990, issue 3050, issue 2213, issue 3048)
DNSCACHE_ENABLED=False
の時のDNSリゾルバーを修正 (issue 2811)Debian Jessie tox test envの
cryptography
を追加します (issue 2848)リクエスト・コールバックが呼び出し可能かどうかを確認するための検証を追加します (issue 2766)
extras/qpsclient.py
を Python 3 に移植しました (issue 2849)Python3の環境下でgetfullargspecを使用した時の非推奨警告をやめました (issue 2862)
非推奨のテスト・エイリアスを更新 (issue 2876)
代替リンク(alternate link)の
SitemapSpider
サポートを修正 (issue 2853)
文書¶
AUTOTHROTTLE_TARGET_CONCURRENCY
設定に欠落していた箇条書きを追加。 (issue 2756)寄稿文書を更新し、新しいサポート・チャネルを文書化します (issue 2762, issue:3038)
文書にScrapy subredditへの参照を含めます
誤ったリンクを修正。 外部へのリンクには https:// を使用 (issue 2978, issue 2982, issue 2958)
CloseSpider拡張機能をより適切に文書化 (issue 2759)
MongoDBの例で
pymongo.collection.Collection.insert_one()
を使用 (issue 2781)スペルミスとタイプミス (issue 2828, issue 2837, issue 2884, issue 2924)
CSVFeedSpider.headers
文書を明確にしました (issue 2826)DontCloseSpider
例外を文書化し、spider_idle
を明確にします (issue 2791)README の "Releases" 節を更新 (issue 2764)
DOWNLOAD_FAIL_ON_DATALOSS
文書内の rst 文法 を修正 (issue 2763)startproject引数の説明の些細な修正 (issue 2866)
Response.body文書でデータ型を明確にする (issue 2922)
request.meta['depth']
に関する注記をDepthMiddleware文書に追加 (issue 2374)request.meta['dont_merge_cookies']
に関する注記をCookiesMiddleware文書に追加 (issue 2999)プロジェクト構造の例を更新 (issue 2964, issue 2976)
ItemExportersの使用例を改善 (issue 2989)
スパイダーとダウンローダーミドルウェアのための
from_crawler
メソッドについて文書化 (issue 3019)
Scrapy 1.4.0 (2017-05-18)¶
Scrapy 1.4は、それほど多くの息をのむような新機能をもたらしませんが、それでもかなりの数の便利な改善をもたらします。
Scrapyは、新しい設定 FTP_USER
と FTP_PASSWORD
を介して、カスタマイズ可能なユーザーとパスワードを使用した匿名FTPセッションをサポートするようになりました。 また、Twistedバージョン17.1.0以降を使用している場合、Python3でFTPを使用できるようになりました。
リクエストを作成するための新メソッド response.follow
があります。 これは、Scrapyスパイダーでリクエストを作成するための推奨される方法になりました。 この方法により、正しいスパイダーを簡単に作成できます。 response.follow
には、 scrapy.Request
オブジェクトを直接作成するよりもいくつかの利点があります。
相対URLを処理します;
非UTF8ページの非ASCII URLで適切に機能します;
絶対URLと相対URLに加えて、セレクターをサポートします。
<a>
要素の場合、href値を抽出することもできます。
たとえば、以下の代わりに:
for href in response.css('li.page a::attr(href)').extract():
url = response.urljoin(href)
yield scrapy.Request(url, self.parse, encoding=response.encoding)
以下のように書くことができます:
for a in response.css('li.page a'):
yield response.follow(a, self.parse)
リンクエ抽出器も改善されています。 これらは、汎用の最新のブラウザと同じように機能します。 Link
オブジェクトを作成するときに、先頭と末尾の空白が属性から削除されます(例えば href=" http://example.com"
と考えて下さい)。この空白の削除は、 FormRequest
を含む action
属性でも発生します。
リンク抽出器はデフォルトでURLを正規化しないことにも注意してください。 これは時々ユーザーを困惑させていました、そしてそれは実際にはブラウザがすることではないので、抽出されたリンクの余分な変換を削除しました。
Scrapyがリンクをたどるときに送信する Referer:
ヘッダーをより細かく制御したい場合は、独自の Referrer Policy
を設定できます。 Scrapy 1.4より前は、デフォルトの RefererMiddleware
HTTPリクエストを生成したレスポンスのURLに単純かつ盲目的に設定していました(URLシードの情報が漏洩する可能性がありました)。 デフォルトでは、Scrapyは通常のブラウザと同じように動作するようになりました。 また、このポリシーは、W3C標準値(または必要に応じて独自のカスタム値)を使用して完全にカスタマイズできます。 詳細については、 REFERRER_POLICY
を参照してください。
Scrapyスパイダーのデバッグを容易にするために、Scrapyはデフォルトで1.4でより多くの統計をログに記録します。それらは、メモリ使用統計、詳細な再試行統計、詳細なHTTPエラー・コード統計 です。 同様の変更として、HTTPキャッシュパスがログにも表示されるようになりました。
最後になりますが、Scrapyには、新しい FEED_EXPORT_INDENT
設定を使用して、JSONおよびXMLアイテムをより人間が読みやすいようにするオプションがあり、アイテム間の改行やカスタム・インデント・オフセットもあります。
Enjoy! (または、このリリースの残りの変更について読んでください。)
非推奨と下位互換性のない変更¶
デフォルトは
scrapy.linkextractors.LinkExtractor
のcanonicalize=False
です (issue 2537, fixes issue 1941 and issue 1982) 警告:これは技術的に後方互換性がありませんデフォルトでメモリ拡張を有効にします (issue 2539, fixes issue 2187) 。 これは技術的に後方互換性がありません。 ですので、デフォルト以外の
MEMUSAGE_***
オプションが設定されているかどうかを確認してください。EDITOR
環境変数は、settings.py で定義されたEDITOR
オプションよりも優先されるようになりました (issue 1829) 。 Scrapyのデフォルト設定は、環境変数に依存しなくなりました。 これは技術的には後方互換性のない変更です。Spider.make_requests_from_url
は非推奨です (issue 1728, fixes issue 1495)
新機能¶
proxy
リクエスト・メタ・キーでプロキシー資格情報(proxy credentials)を受け入れます (issue 2526)brotli 圧縮された内容をサポートします。オプションの brotlipy が必要です (issue 2535)
新 response.follow はリクエスト作成のショートカットです(issue 1940)
Request
オブジェクトにflags
引数と属性を追加 (issue 2047)アノニマスFTPのサポート (issue 2342)
retry/count
統計とretry/max_reached
統計とretry/reason_count/<reason>
統計をRetryMiddleware
に追加 (issue 2543)httperror/response_ignored_count
統計とhttperror/response_ignored_status_count/<status>
統計をHttpErrorMiddleware
に追加 (issue 2566)RefererMiddleware
のカスタマイズ可能なReferrer policy
(issue 2306)新
data:
URI ダウンロード・ハンドラー (issue 2334, fixes issue 2156)HTTPキャッシュ使用時のログキャッシュディレクトリ (issue 2611, 修正 issue 2604)
プロジェクトに重複するスパイダー名が含まれている場合にユーザーに警告 (fixes issue 2181)
scrapy.utils.datatypes.CaselessDict
は今や辞書だけでなくMapping
インスタンスも受け入れるようになりました (issue 2646)FilesPipeline
またはImagesPipeline
を使用した メディア ダウンロード は、オプションで新しいMEDIA_ALLOW_REDIRECTS
設定を使用してHTTPリダイレクトを処理できるようになりました (issue 2616, 修正 issue 2004)新しい
DOWNLOAD_FAIL_ON_DATALOSS
設定を使用してWebサイトからの不完全なレスポンスを受け入れます (issue 2590, fixes issue 2586)オプションの
FEED_EXPORT_INDENT
設定によるJSONおよびXMLアイテムのキレイな印刷(pretty-print) (issue 2456, 修正 issue 1327)None
値が渡されたときに、FormRequest.from_response
フォームデータにフィールドをドロップできるようにします (issue 667)新しい
max_retry_times
メタ・キーを使用したリクエストごとの再試行時間 (issue 2642)scrapy
コマンドのより明示的な代替手段としてのpython -m scary
(issue 2740)
バグ修正¶
LinkExtractorは、属性から先頭と末尾の空白を削除するようになりました (issue 2547, 修正 issue 1614)
FormRequest
のaction属性で空白を適切に処理する (issue 2548)すべてのHTTPヘッダーが受信されるまでプロキシからのCONNECTレスポンス・バイトをバッファリングします (issue 2495, 修正 issue 2491)
Twisted>=17.1 を使用している場合、FTPダウンローダーがPython3で動作するようになりました (issue 2599)
コンテンツを解凍した後、ボディを使用してレスポンス・タイプを選択します (issue 2393, 修正 issue 2145)
常に
Content-Encoding: gzip
をHttpCompressionMiddleware
ステージで解凍します (issue 2391)Spider.custom_settings
のカスタムログレベルを尊重します (issue 2581, fixes issue 1612)macOS の 'make htmlview' 修正 (issue 2661)
削除:コマンドリストから "commands" を削除 (issue 2695)
本文が空のPOSTリクエストの重複するContent-Lengthヘッダーを修正しました (issue 2677)
大量のダウンロードを適切にキャンセルします。例えば上記の
DOWNLOAD_MAXSIZE
(issue 1616)ImagesPipeline: パレットを使用した透明なPNG画像の処理を修正しました (issue 2675)
整理とリファクタリング¶
テスト: 一時ファイルとフォルダーの削除 (issue 2570) 、macOSでのProjectUtilsTestの修正 (issue 2569) 、Travis CIでのLinux用のポータブルpypyの使用 (issue 2710)
CrawlSpiderの
_requests_to_follow
からリクエスト構築を分離します (issue 2562)削除: “Python 3 progress” バッジを削除 (issue 2567)
.gitignore
にさらに数行追加します (issue 2557)バンプバージョン(bumpversion)のプレリリース構成を削除します (issue 2159)
追加: codecov.yml ファイル追加 (issue 2750)
Twistedのバージョンに基づいてコンテキスト・ファクトリの実装を設定します (issue 2577, 修正 issue 2560)
デフォルトのプロジェクト・ミドルウェア・テンプレートに省略された
self
引数を追加 (issue 2595)ExecutionEngineで冗長な
slot.add_request()
呼び出しを削除 (issue 2617)scrapy.pipelines.files.FSFilesStore
でより具体的なos.error
例外をキャッチします (issue 2644)"localhost" テスト・サーバー証明書を変更 (issue 2720)
削除: 未使用の
MEMUSAGE_REPORT
設定を削除 (issue 2576)
文書¶
エクスポーターにはバイナリモードが必要です (issue 2564, fixes issue 2553)
lxmlのバグによる
FormRequest.from_response
の問題に言及 (issue 2572)テンプレートではシングル・クォートを一律に使用します (issue 2596)
ftp_user
メタ・キーとftp_password
メタ・キーについて文書化 (issue 2587)非推奨になった
contrib/
節を削除 (issue 2636)WindowsにScrapyをインストールするときにAnacondaをお勧めします (issue 2477, 修正 issue 2475)
FAQ: WindowsでのPython 3サポートに関するメモを書き直し (issue 2690)
セレクターの節を再配置 (issue 2705)
SelectorList
文書から__nonzero__
を削除 (issue 2683)DUPEFILTER_CLASS
設定の文書でリクエスト・フィルタリングを無効にする方法を説明 (issue 2714)sphinx_rtd_themeを文書とsetupとreadmeに追加 (issue 2668)
JSONアイテム・ライターの例でテキスト・モードでファイルを開く (issue 2729)
allowed_domains
の例を明確にする (issue 2670)
Scrapy 1.3.3 (2017-03-10)¶
バグ修正¶
依存関係が欠落していて、
SPIDER_MODULES
が間違っているため、デフォルトでSpiderLoader
がImportError
を再度発生させます。これらの例外は、1.3.0以降警告として沈黙させていました。必要に応じて警告と例外を切り替えるための新しい設定が導入されました。 詳細については、SPIDER_LOADER_WARN_ONLY
を参照してください。
Scrapy 1.3.2 (2017-02-13)¶
バグ修正¶
辞書との間で変換するときにリクエスト・クラスを保持(utils.reqser) (issue 2510)
チュートリアルの作成者フィールドに一貫したセレクターを使用します (issue 2551)
Twisted 17+のTLS互換性を修正 (issue 2558)
Scrapy 1.3.1 (2017-02-08)¶
新機能¶
ブーリアン設定で
'True'
と' False'
文字列値をサポートします (issue 2519) 。 あなたはscrapy crawl myspider -s REDIRECT_ENABLED=False
のようなことができるようになりました。response.xpath()
でkwargsをサポートして、 XPath変数 とアドホックな名前空間宣言を使用します。これには、少なくとも Parsel v1.1 が必要です。 (issue 2457)Python 3.6のサポートを追加 (issue 2485)
PyPyでテストが走ります(警告:一部のテストはまだ失敗するため、PyPyはまだサポートされていません)。
バグ修正¶
DNS_TIMEOUT
設定を適用 (issue 2496)修正:
view
コマンド。 v1.3.0 でデグレてた。 (issue 2503)ファイル/画像 パイプラインでの
*_EXPIRES settings
に関するテストを修正 (issue 2460)基本的なプロジェクト・テンプレートを使用するときに生成されるパイプライン・クラスの名前を修正 (issue 2466)
Twisted 17+ との互換性を修正 (issue 2496, issue 2528)
Python 3.6での
scrapy.Item
の継承を修正 (issue 2511)SPIDER_MIDDLEWARES
とDOWNLOADER_MIDDLEWARES
とEXTENSIONS
とSPIDER_CONTRACTS
のコンポーネントの順序の為に数値を適用します (issue 2420)
文書¶
コーディング規範(Code of Conduct)節を書き直し、 Contributor Covenant v1.4 にアップグレードします。 (issue 2469)
スパイダー引数を渡すと、それらがスパイダー属性に変換されることを明確にします (issue 2483)
FormRequest.from_response()
のformid
引数について文書化 (issue 2497)READMEファイル達に .rst 拡張子を追加 (issue 2507)
LevelDBキャッシュ・ストレージ・バックエンドに言及します (issue 2525)
コールバック・コード例で
yield
を使用 (issue 2533).re()/.re_first()
デコードするHTML要素に関する注記を追加 (issue 1704)タイプミス (issue 2512, issue 2534, issue 2531)
整理¶
MetaRefreshMiddleware
の冗長なチェックを削除 (issue 2542)LinkExtractor
で allow/deny パターンをより速くチェックします (issue 2538)古いTwistedバージョンをサポートするデッド・コードを削除 (issue 2544)
Scrapy 1.3.0 (2016-12-21)¶
このリリースは、1.2.2のある主要な理由により、1.2.2の直後の版となります。0.18から1.2.2(含まれる)以降のリリースでは、Twisted(scrapy.xlib.tx.*
)からのバックポートされたコードを使用することがわかりました。 より新しいTwistedモジュールが利用できる場合でも。 Scrapyは twisted.web.client
と twisted.internet.endpoints
を直接使用するようになりました。(以下のクリーンアップも参照してください。)
これは大きな変更であるため、1.2シリーズを使用しているプロジェクトを壊すことなく、バグをすばやく修正したかったのです。
新機能¶
MailSender
はto
引数とcc
引数の値として単一の文字列を受け入れるようになりました(issue 2272)Scrapyシェル内の
scrapy fetch url
とscrapy shell url
とfetch(url)
はデフォルトでHTTPリダイレクトに従います。(issue 2290) 詳細については、fetch
とshell
を参照してください。HttpErrorMiddleware
はDEBUG
ではなくINFO
レベルでエラーを記録するようになりました。 これは技術的には 後方互換性がない ので、ログパーサーを確認してください。デフォルトでは、ロガー名は以前のリリースの短い「トップレベル」バリアント(例
[scrapy]
)ではなく、長い形式のパス[scrapy.extensions.logstats]
を使用するようになりました。短いロガー名の部分を期待するログパーサーがある場合、 後方互換性がありません 。LOG_SHORT_NAMES
をTrue
に設定して、短いロガー名に戻すことができます。
依存関係整理とコード整理¶
Scrapyには Twisted >= 13.1 が必要になりました。これは、すでに多くのLinuxディストリビューションに当てはまります。
その結果、
scrapy.xlib.tx.*
モジュール群を削除しました。これは、 "古い" Twistedのバージョンでスタックしているユーザー向けにTwistedコードの一部をコピーしていました。ChunkedTransferMiddleware
は非推奨になり、デフォルトのダウンローダー・ミドルウェアから削除されました。
Scrapy 1.2.3 (2017-03-03)¶
パッケージの修正:setup.pyでサポートされていないTwistedバージョンを禁止します。
Scrapy 1.2.2 (2016-12-06)¶
バグ修正¶
パイプラインが
open_spider()
で失敗したときの不可解なトレースバックを修正しました (issue 2011)埋め込まれたIPythonシェル変数を修正 (1.2.0で再表示された issue 396 の修正は issue 2418 )
robots.txtを扱う際のいくつかのパッチ:
(非標準の)相対サイトマップURLを処理 (issue 2390)
Python 2で非ASCIIのURLとUser-Agentを処理 (issue 2373)
文書¶
Request
のmeta
辞書の"download_latency"
を文書化 (issue 2033)ToCから(非推奨およびサポートされていない)Ubuntuパッケージのページを削除 (issue 2335)
タイプミスを幾つか修正 (issue 2346, issue 2369, issue 2369, issue 2380) and clarifications (issue 2354, issue 2325, issue 2414)
その他の変更¶
conda-forge をScrapyの公式condaチャンネルとして宣伝する (issue 2387)
テキスト以外のレスポンスで
.css()
または.xpath()
を使用しようとした場合の、より役立つエラーメッセージ (issue 2264)startproject
コマンドは、サンプルのmiddlewares.py
ファイルを生成するようになりました (issue 2335)scrapy version
の詳細出力に依存関係のバージョン情報を追加します (issue 2404)ソース配布からすべての
*.pyc
ファイルを削除 (issue 2386)
Scrapy 1.2.1 (2016-10-21)¶
バグ修正¶
TLS/SSL接続を確立するときにOpenSSLのより寛容な(permissive)デフォルト暗号を含めます (issue 2314)
非ASCIIURLリダイレクトでの "Location" HTTPヘッダー・デコードを修正 (issue 2321)
文書¶
JsonWriterPipeline例を修正 (issue 2302)
さまざまな注意事項: issue 2330 はスパイダー名、 issue 2329 はミドルウェア・メソッドの処理順序、 issue 2327 は複数値(multi-valued)のHTTPヘッダーをリストとして取得します。
その他の変更¶
組み込みのスパイダー・テンプレートの
start_urls
からwww.
を削除 (issue 2299)
Scrapy 1.2.0 (2016-10-03)¶
新機能¶
新しい
FEED_EXPORT_ENCODING
設定は、アイテムをファイルに書き込むときに使用されるエンコーディングをカスタマイズします。 これは、JSON出力で\uXXXX
エスケープをオフにするために使用できます。 これは、XMLまたはCSV出力にUTF-8以外のものが必要な場合にも便利です。(issue 2034)startproject
コマンドは、プロジェクト名に基づいてデフォルトのディレクトリを上書きするオプションの宛先ディレクトリをサポートするようになりました。(issue 2005)新しい
SCHEDULER_DEBUG
設定は、リクエストのシリアル化エラーをログに記録します(issue 1610)JSONエンコーダーが
set
インスタンスのシリアル化をサポートするようになりました(issue 2058)application/json-amazonui-streaming
をTextResponse
として解釈する(issue 1503).シェルツール(
shell
、 inspect_response) を使用すると、デフォルトでscrapy
がインポートされます (issue 2248)
バグ修正¶
DefaultRequestHeaders ミドルウェアは、UserAgentミドルウェアの前に実行されるようになりました( issue 2088 )。 警告:これは技術的に後方互換性がありません。 ただし、これはバグ修正と見なされます。
.scrapy
データ・ディレクトリを使用するHTTPキャッシュ拡張機能とプラグインは、プロジェクトの外部で機能するようになりました (issue 1581) 。 警告:これは技術的に後方互換性がありません。 ただし、これはバグ修正と見なされます。Selector
は、response
とtext
の両方を渡すことを許可しなくなりました (issue 2153)scrapy parse
で間違ったコールバック名のロギングを修正 (issue 2169)奇妙なgzip解凍バグの修正 (issue 1606)
CrawlSpider
をscrapy parse
とともに使用する場合の選択されるコールバックの修正 (issue 2225)スパイダーがアイテムを生成しない場合の無効なJSONおよびXMLファイルの修正 (issue 872)
ログの警告を回避するために
flush()
fprStreamLogger
を実装 (issue 2125)
リファクタリング¶
canonicalize_url
は w3lib.url に移動されました (issue 2168)
テストと動作要件¶
Scrapyの新しい動作要件基準はDebian 8 "Jessie" です。 以前はUbuntu 12.04 Precise でした。 つまりこれは、 Twisted 14.0, pyOpenSSL 0.14, lxml 3.4 (メイン)パッケージで、かつ最低でも表記のバージョン以上で継続的インテグレーション・テストを実行するということです。
Scrapyは、これらのパッケージの古いバージョンで非常にうまく機能する可能性があります(たとえば、コードベースにはまだ古いTwistedバージョンのスイッチがあります)が、保証されていません(テストされていないため)。
文書¶
文法の修正: issue 2128, issue 1566
READMEからダウンロード統計バッジを削除 (issue 2160)
新 Scrapy アーキテクチャ図 (issue 2165)
Response
パラメータ達の文書を更新 (issue 2197)誤解を招くような
RANDOMIZE_DOWNLOAD_DELAY
の説明を言い換えました (issue 2190)StackOverflowをサポートチャネルとして追加 (issue 2257)
Scrapy 1.1.4 (2017-03-03)¶
パッケージの修正:setup.pyでサポートされていないTwistedバージョンを禁止します。
Scrapy 1.1.3 (2016-09-22)¶
バグ修正¶
ImagesPipeline
とFilesPipeline
のサブクラスのクラス属性は1.1.1以前と同じように機能します (issue 2243, 修正 issue 2198)
文書¶
Overview と tutorial は、 http://toscrape.com Webサイトを使用するように書き直されました (issue 2236, issue 2249, issue 2252)
Scrapy 1.1.2 (2016-08-18)¶
バグ修正¶
欠落している
IMAGES_STORE_S3_ACL
設定を導入して、S3に画像をアップロードするときにImagesPipeline
のデフォルトのACLポリシーを上書きします(Scrapy 1.1.0以降、デフォルトのACLポリシーは "public-read" ではなく "private" であることに注意してください)IMAGES_EXPIRES
値が90に戻されました(デグレは1.1.1で発生しました)
Scrapy 1.1.1 (2016-07-13)¶
バグ修正¶
HTTPSプロキシーへのCONNECTリクエストに "Host" ヘッダーを追加 (issue 2069)
レスポンス・クラスを選択するときにレスポンス `` body``を使用します (issue 2001, 修正 issue 2000)
間違ったnetlocでURLを正規化することに失敗しないでください (issue 2038, 修正 issue 2010)
HttpCompressionMiddleware
(とSitemapSpider
) で小修正:HEADレスポンスをデコードしない (issue 2008, 修正 issue 1899)
gzip Content-Type ヘッダー内のcharsetパラメーターを処理します (issue 2050, 修正 issue 2049)
gzipオクテット・ストリーム・レスポンスを解凍しない (issue 2065, 修正 issue 2063)
IPアドレスホストに対して証明書を検証するときに例外をキャッチ(および警告付きで無視) (issue 2094, 修正 issue 2092)
カスタマイズのためのレガシー・クラス属性の使用に関して、
FilesPipeline
とImagesPipeline
の下位互換性を再度作成します (issue 1989, 修正 issue 1985)
新機能¶
プロジェクト・フォルダの外で genspider を有効にする (issue 2052)
HTTPS CONNECT
TunnelError
をデフォルトで再試行 (issue 1974)
文書¶
辞書式順序での
FEED_TEMPDIR
設定 (commit 9b3c72c)概要で慣用的な
.extract_first()
を使用 (issue 1994)著作権表示年を更新 (commit c2c8036)
エラーバックに関する情報と例を追加 (issue 1995)
ダウンローダー・ミドルウェアの例で "url" 変数使用 (issue 2015)
文法修正 (issue 2054, issue 2120)
スパイダー・コールバックでのBeautifulSoupの使用に関する新しいFAQ項目 (issue 2048)
ScrapyがPython3を搭載したWindowsで機能しないことに関する注記を追加 (issue 2060)
プル・リクエストで完全なタイトルを使う事を奨励する (issue 2026)
テスト¶
Travis CI と Pin pytest-cov py.test要件を2.2.1にアップグレードします (issue 2095)
Scrapy 1.1.0 (2016-05-11)¶
この1.1リリースには、多くの興味深い機能とバグ修正が含まれています:
Scrapy1.1はPython3のベータサポートがあります( Twisted >= 15.5 が必要です)。 詳細といくつかの制限については、 Python 3 のベータ・サポート を参照してください。
ホットな新機能:
Item loaderは今や入れ子になったローダーをサポートします (issue 1467)
FormRequest.from_response
が改良されました (issue 1382, issue 1137)設定
AUTOTHROTTLE_TARGET_CONCURRENCY
を追加し AutoThrottle 文書を改善しました (issue 1324)本文をunicodeとして取得するために
response.text
を追加しました (issue 1730)アノニマス S3 接続 (issue 1358)
ダウンローダー・ミドルウェアでのDeferreds (issue 1473) 。 これにより robots.txt 処理が向上します (issue 1471)
HTTPキャッシュ処理は今やRFC2616に厳密に従います。そして設定
HTTPCACHE_ALWAYS_STORE
とHTTPCACHE_IGNORE_RESPONSE_CACHE_CONTROLS
が追加されました (issue 1151)セレクターは parsel ライブラリに抽出されました (issue 1409) 。 つまり、ScrapyなしでScrapyセレクターを使用でき、Scrapyをアップグレードせずにセレクター・エンジンをアップグレードすることもできます。
HTTPSダウンローダーは、TLS 1.0を強制する代わりに、デフォルトでTLSプロトコル・ネゴシエーションを実行するようになりました。 あなたは 新しい
DOWNLOADER_CLIENT_TLS_METHOD
を使用してSSL/TLSメソッドを設定することもできます。
以下のバグ修正には注意が必要な場合があります:
デフォルトでは、不正なリクエスト(HTTP 400)を再試行しないでください (issue 1289) 。 古い動作が必要な場合は、
400
「400」をRETRY_HTTP_CODES
にセットしてください。シェル・ファイルの引数処理を修正しました (issue 1710, issue 1550) 。
scrapy shell index.html
を実行しようとすると、URL URL http://index.html ロードしようとします。ローカル・ファイルをロードするには、scrapy shell ./index.html
を使用してください。Robots.txtコンプライアンスは、新しく作成されたプロジェクトに対してデフォルトで有効になりました (issue 1724) 。 Scrapyは、robots.txtがダウンロードされるのを待ってから、クロールを続行します (issue 1735) 。この動作を無効にする場合は、新しいプロジェクトを作成した後、
settings.py
ファイルのROBOTSTXT_OBEY
を更新します。エクスポータは、デフォルトでbyteではなくunicodeで動作するようになりました (issue 1080) 。
PythonItemExporter
を使用する場合は、コードを更新して、現在非推奨となっているバイナリモードを無効にすることをお勧めします。ドットを含むXMLノード名を有効なものとして受け入れます (issue 1533)
(
FilesPipeline
またはImagesPipeline
を使用して)ファイルまたは画像をS3にアップロードする場合、デフォルトのACLポリシーが "public" ではなく "private" になりました。 警告:後方互換性がありません!FILES_STORE_S3_ACL
を使用して変更できます。特に非ASCII文字を含むURLの場合、より正確な出力のために
canonicalize_url()
を再実装しました (issue 1947) 。これにより、以前のScrapyバージョンと比較してリンク抽出器の出力が変更される可能性があります。 これにより、1.1より前の実行でまだ保持されている可能性のある一部のキャッシュ・エントリが無効になる場合もあります。 警告:後方互換性がありません!
その他の改善点とバグ修正の詳細については、以下を読み進めてください。
Python 3 のベータ・サポート¶
私たちはScrapyをPython3で実行するために懸命に取り組んできました( hard at work to make Scrapy run on Python 3 )。 その結果、Python 3.3と3.4と3.5でスパイダーを実行できるようになりました( Twisted >= 15.5 が必要)。一部の機能はまだ欠落しています(一部は移植されない可能性があります)。
ほとんどすべての組み込み拡張機能/ミドルウェアが機能することが期待されています。けれども、我々はPython3ではいくつかの制限があることを認識しています:
ScrapyはPython3を搭載したWindowsでは機能しません
電子メール送信はサポートされていません
FTPダウンロード処理はサポートされていません
Telnetコンソールはサポートされていません
追加の新機能と拡張機能¶
Scrapyにコーディング規範 ( Code of Conduct ) が追加されました (issue 1681)
コマンドライン・ツールでzsh補完できるようになりました (issue 934)
scrapy shell
の改良:bpythonをサポートし、
SCRAPY_PYTHON_SHELL
を介して優先Pythonシェルを構成します (issue 1100, issue 1444)スキーム無しのURLをサポート (issue 1498) 警告: 後方互換性がありません!
相対ファイル・パスのサポートを復活させます (issue 1710, issue 1550)
デフォルトのチェック間隔を変更するために
MEMUSAGE_CHECK_INTERVAL_SECONDS
設定を追加 (issue 1282)ダウンロード・ハンドラーは、スキームを使用して最初のリクエストで遅延読み込みされるようになりました (issue 1390, issue 1421)
HTTPSダウンロード・ハンドラーはTLS1.0を強制しなくなりました。 代わりに、OpenSSLの
SSLv23_method()/TLS_method()
が使用され、リモート・ホストと可能な限り最高のTLSプロトコル・バージョンのネゴシエーションを試みることができます (issue 1794, issue 1629)RedirectMiddleware
は、スパイダー属性またはRequest
のmeta
キーのhandle_httpstatus_list
からステータス・コードをスキップするようになりました (issue 1334, issue 1364, issue 1447)フォームの送信:
<button>
要素でも機能するようになりました (issue 1469)空の文字列が値のない送信ボタンに使用されるようになりました (issue 1472)
辞書風な設定には、キーごとの優先順位があります (issue 1135 と issue 1149 と issue 1586)
非ASCII電子メール送信 (issue 1662)
関連する設定が設定されていない場合、
CloseSpider
とSpiderState
拡張機能が無効になるようになりました (issue 1723, issue 1725)ExecutionEngine.close
メソッド追加 (issue 1423)CrawlerRunner.create_crawler
メソッド追加 (issue 1528)スケジューラの優先度キューは、
SCHEDULER_PRIORITY_QUEUE
を介してカスタマイズできるようになりました (issue 1822)リンク抽出器で
.pps
リンクがデフォルトで無視されるようになりました (issue 1835)FTPおよびS3フィード・ストレージの一時データ・フォルダーは、新しい
FEED_TEMPDIR
設定を使用してカスタマイズできます (issue 1847)FilesPipeline
とImagesPipeline
の設定がクラス属性ではなくインスタンス属性になり、スパイダー固有の動作が可能になりました (issue 1891)JsonItemExporter
は、開始と終了の角括弧(square bracket)を独自の行(出力ファイルの最初と最後の行)でフォーマットするようになりました (issue 1950)利用可能な場合、
botocore
はS3FeedStorage
とS3DownloadHandler
とS3FilesStore
に使用されます (issue 1761, issue 1883)大量の文書の更新と関連する修正 (issue 1291, issue 1302, issue 1335, issue 1683, issue 1660, issue 1642, issue 1721, issue 1727, issue 1879)
その他のリファクタリングと最適化と整理 (issue 1476, issue 1481, issue 1477, issue 1315, issue 1290, issue 1750, issue 1881)
非推奨と削除¶
to_bytes
とto_unicode
を追加し、str_to_unicode
とunicode_to_str
関数を非推奨にした (issue 778)isbinarytext
の使用を置き換えるために、binary_is_text
が導入されました(ただし、逆の戻り値で) (issue 1851)optional_features
セットは削除されました (issue 1359)--lsprof
コマンドライン・オプションが削除されました (issue 1689) 。 警告:後方互換性はありません。 しかし、ユーザー・コードを壊すことはありません。以下のデータ型は非推奨です (issue 1720):
scrapy.utils.datatypes.MultiValueDictKeyError
scrapy.utils.datatypes.MultiValueDict
scrapy.utils.datatypes.SiteNode
以前にバンドルされていた
scrapy.xlib.pydispatch
ライブラリは非推奨になり、 pydispatcher に置き換えられました。
再配置¶
telnetconsole
はextensions/
へ再配置されました (issue 1524)注記: telnet は Python 3 では有効ではありません (https://github.com/scrapy/scrapy/pull/1524#issuecomment-146985595)
バグ修正¶
Scrapyは、
HTTP 400 Bad Request
レスポンスを受け取ったリクエストを再試行しなくなりました (issue 1289) 。 警告:後方互換性がありません!http_proxy configの空のパスワードをサポート (issue 1274)
application/x-json
をTextResponse
として解釈します (issue 1333)複数の値を持つlink rel属性をサポート (issue 1201)
<base>
タグがある場合のscrapy.http.FormRequest.from_response
を修正 (issue 1564)TEMPLATES_DIR
処理修正 (issue 1575)FormRequest
に関する様々な修正 (issue 1595, issue 1596, issue 1597)_monkeypatches
をより堅牢にします (issue 1634)アイテムに文字列以外のフィールドがある
XMLItemExporter
のバグを修正しました (issue 1738)macOSでのstartprojectコマンドの修正 (issue 1635)
文字列以外のアイテム型の
PythonItemExporter
とCSVExporterを修正しました (issue 1737)ロギング関係の様々な修正 (issue 1294, issue 1419, issue 1263, issue 1624, issue 1654, issue 1722, issue 1726 and issue 1303)
utils.template.render_templatefile()
内のバグを修正 (issue 1212)robots.txt
からのサイト・マップの抽出では、大文字と小文字が区別されなくなりました (issue 1902)同じリモート・ホストに複数のプロキシを使用すると、HTTPS+CONNECTトンネルが混同される可能性があります (issue 1912)
Scrapy 1.0.7 (2017-03-03)¶
パッケージの修正:setup.pyでサポートされていないTwistedバージョンを禁止します。
Scrapy 1.0.6 (2016-05-04)¶
修正: RetryMiddlewareは、非標準のHTTPステータ・スコードに対して堅牢になりました (issue 1857)
修正: ファイル・ストレージHTTPキャッシュが間違った変更時刻をチェックしていた (issue 1875)
文書: Sphinx 1.4以降のサポート (issue 1893)
文書: セレクターの例の一貫性 (issue 1869)
Scrapy 1.0.5 (2016-02-04)¶
修正: [バックポート] LinkExtractorsの偽のリンクを無視 (修正 issue 907, commit 108195e)
テスト: 'pytest' を使用するようにbuildbot makefileを変更 (commit 1f3d90a)
文書: チュートリアルとメディア・パイプラインのタイプミスを修正 (commit 808a9ea と commit 803bd87)
文書: 設定の文書のDOWNLOADER_MIDDLEWARES_BASEにAjaxCrawlMiddlewareを追加 (commit aa94121)
Scrapy 1.0.4 (2015-12-30)¶
Twistedバージョンに応じて、 xlib/tx フォルダーを無視します (commit 7dfa979)
新しいtravis-ciインフラで実行 (commit 6e42f0b)
スペル修正 (commit 823a1cc)
xmliter正規表現のノード名をエスケープします (commit da3c155)
ドットありのxmlノード名をテスト (commit 4418fc3)
テスト: テストで、壊れているバージョンのPillowを使用禁止 (commit a55078c)
log on versionコマンドを無効にする。 closes #1426 (commit 86fc330)
log on startproject コマンド無効 (commit db4c9fe)
PyPIダウンロード統計バッジを追加 (commit df2b944)
PRが scrapy/scrapyブランチから作成されている場合は、Travisでテストを2回実行しないでください (commit a83ab41)
Python 3移植ステータス・バッジをREADMEに追加 (commit 73ac80d)
RFPDupeFilterの永続性を修正 (commit 97d080e)
テスト: dupefilterの永続性が機能していないことを示すテスト (commit 97f2fb3)
file:// スキーム・ハンドラーの明示的なファイル・クローズ (commit d9b4850)
シェルでdupefilterを無効にします (commit c0d0734)
文書: サイドバーに表示されるtoctreeにキャプションを追加 (commit aa239ad)
文書: pywin32はすでに依存関係として宣言されているため、インストール手順から削除しました。 (commit 10eb400)
Conda for Windowsおよびその他のOSの使用に関するインストール注記を追加 (commit 1c3600a)
些細な文法の問題を修正 (commit 7f4ddd5)
文書のタイプミスを修正 (commit b71f677)
今やバージョン1が存在します (commit 5456c0e)
もう一つの無効なxpathエラーを修正 (commit 0a1366e)
ValueErrorを修正: 無効なXPath: selectors.rstの //div/[id="not-exists"]/text() (commit ca8d60f)
タイプミス修正 (commit 7067117)
downloader-middleware.rst と exceptions.rst 内のタイプミス修正。middlware → middleware (commit 32f115c)
Debianの互換性に関するメモをUbuntuインストール節に追加 (commit 23fda69)
macOSインストール代替回避策をvirtualenvに置き換え (commit 98b63ee)
インストール手順については、Homebrewのホームページを参照 (commit 1925db1)
サポートされている最も古いtoxバージョンを寄稿文書に追加 (commit 5d10d6d)
注意: すでに python>=2.7.9 に含まれているpipに関するインストール文書に注意してください (commit 85c980e)
文書のUbuntuインストール節にPython以外の依存関係を追加 (commit fbd010d)
文書にmacOSインストール節追加 (commit d8f4cba)
文書(ENH): rtdテーマへのパスを明示的に指定 (commit de73b1a)
些細な修正: scrapy.Spider 文書の文法 (commit 1ddcc7b)
一般的な慣行のサンプル・コードをコメントと一致させます (commit 1b85bcf)
nextcall反復呼び出し(heartbeats) (commit 55f7104)
Twisted 15.4.0 とバックポート修正の互換性 (commit b262411)
pin pytest to 2.7.3 (commit a6535c2)
mgedmin/patch-1からのプル・リクエスト #1512 をマージします (commit 8876111)
mgedmin/patch-2からのプル・リクエスト #1513 をマージします (commit 5d4daf8)
タイプミス (commit f8d0682)
リスト・フォーマットの修正 (commit 5f83a93)
queuelibに最近変更を加えた後のScrapyスキュー・テストを修正 (commit 3365c01)
rweindl/patch-1からのプル・リクエスト #1475 をマージします (commit 2d688cd)
tutorial.rstを更新 (commit fbc1f25)
rhoekman/patch-1からのプル・リクエスト #1449 をマージします (commit 7d6538c)
文法的小変更 (commit 8752294)
versionコマンドにopensslバージョンを追加 (commit 13c45ac)
Scrapy 1.0.3 (2015-08-11)¶
Scrapy install_requiresにservice_identityを追加 (commit cbc2501)
travis#296の回避策 (commit 66af9cd)
Scrapy 1.0.2 (2015-08-06)¶
Twisted 15.3.0 は、ラムダ関数をシリアル化するPicklingErrorを発生しません (commit b04dd7d)
メソッド名の小修正 (commit 6f85c7f)
小修正: scrapy.Spider の文法と明快化 (commit 9c9d2e0)
CONTRIBUTINGにサポート・チャネルに関する宣伝文句を入れる (commit c63882b)
タイプミス修正 (commit a9ae7b0)
文書・リファレンス 修正 (commit 7c8a4fe)
Scrapy 1.0.1 (2015-07-01)¶
FTPClientに渡す前にリクエスト・パスをunquoteします。すでにパスはエスケープされています (commit cc00ad2)
MANIFEST.in にテスト/ソース配布を含める (commit eca227e)
文書: SelectJmes文書修正 (commit b8567bc)
文書: UbuntuとArchlinuxをWindowsサブセクションの外に持ってくる (commit 392233f)
文書: Ubuntuパッケージからバージョン・サフィックスを削除 (commit 5303c66)
文書: 1.0のリリース日を更新 (commit c89fa29)
Scrapy 1.0.0 (2015-06-19)¶
このメジャーリリースには、多くの新機能とバグ修正が含まれています。 更新された overview を確認して、磨かれた チュートリアル とともに変更の一部を確認してください。
スパイダーで辞書を返すためのサポート¶
スパイダーからスクレイピングされたデータを収集するために、スクレイピーアイテムを宣言して返す必要はなくなりました。代わりに、明示的な辞書を返すことができるようになりました。
化石版
class MyItem(scrapy.Item):
url = scrapy.Field()
class MySpider(scrapy.Spider):
def parse(self, response):
return MyItem(url=response.url)
新版
class MySpider(scrapy.Spider):
def parse(self, response):
return {'url': response.url}
スパイダー毎の設定 (GSoC 2014)¶
前回のGoogle Summer of Code プロジェクトでは、設定の入力に使用されるメカニズムの重要な再設計が完了し、特定の設定を上書きする明示的な優先順位が導入されました。その目標の延長として、単一のスパイダー専用に機能する設定に新しいレベルの優先度を含め、プロジェクト設定を再定義できるようにしました。
あなたのスパイダーで custom_settings
クラス変数を定義して使用を開始します:
class MySpider(scrapy.Spider):
custom_settings = {
"DOWNLOAD_DELAY": 5.0,
"RETRY_ENABLED": False,
}
設定の作成について詳しくは、 設定 をご覧ください
Pythonロギング¶
Scrapy 1.0は、Twistedロギングから離れ、デフォルトのロギング・システムとしてPython組み込みのものをサポートするようになりました。 ロギング関数を呼び出すための古いカスタム・インターフェースのほとんどについて下位互換性を維持していますが、PythonロギングAPIに完全に切り替えるように警告が表示されます。
旧版
from scrapy import log
log.msg('MESSAGE', log.INFO)
新版
import logging
logging.info('MESSAGE')
スパイダーを使用したロギングは変わりませんが、 log()
メソッドに加えて、スパイダーがログ・イベントを発行するために作成されたカスタム logger
にアクセスできます:
class MySpider(scrapy.Spider):
def parse(self, response):
self.logger.info('Response received')
詳細については、ロギング文書をご覧ください: ロギング(logging)
クローラーAPIリファクタリング (GSoC 2014)¶
前回のGoogle Summer of Codeのもう1つのマイル・ストーンは、内部APIのリファクタリングであり、よりシンプルで簡単な使用法を模索していました。 コアAPI で新しいコア・インターフェースを確認してください。
これらの変更に直面する一般的な状況は、スクリプトからScrapyを実行しているときです。 新しいAPIを使用してSpiderを手動で実行する方法の簡単な例を以下に示します:
from scrapy.crawler import CrawlerProcess
process = CrawlerProcess({
'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)'
})
process.crawl(MySpider)
process.start()
この機能はまだ開発中であり、安定した状態に達するまではAPIが変更される可能性があることに注意してください。
Scrapyを実行するスクリプトの例をもっと見る: よくある例
モジュールの再配置¶
Scrapyの一般的な構造の改善を試み、モジュールが大幅に再配置されました。主な変更点は、さまざまなサブ・パッケージを新しいプロジェクトに分割し、 scrapy.contrib
と scrapy.contrib_exp
の両方をトップ・レベルのパッケージに分解することでした。非推奨のモジュールをインポートすると、新しい場所を示す警告が表示されるため、内部再配置間で下位互換性が維持されています。
再配置全リスト¶
括り出されたパッケージ
注釈
これらの拡張機能には、いくつかの小さな変更が加えられました。一例として、一部の設定名が変更されました。新しい使用法を理解するには、新しい各リポジトリの文書を確認してください。
古い場所 |
新しい場所 |
---|---|
scrapy.commands.deploy |
scrapyd-client (他の選択肢はこちら: スパイダーのデプロイ) |
scrapy.contrib.djangoitem |
|
scrapy.webservice |
scrapy.contrib_exp
と scrapy.contrib
を廃止
古い場所 |
新しい場所 |
---|---|
scrapy.contrib_exp.downloadermiddleware.decompression |
scrapy.downloadermiddlewares.decompression |
scrapy.contrib_exp.iterators |
scrapy.utils.iterators |
scrapy.contrib.downloadermiddleware |
scrapy.downloadermiddlewares |
scrapy.contrib.exporter |
scrapy.exporters |
scrapy.contrib.linkextractors |
scrapy.linkextractors |
scrapy.contrib.loader |
scrapy.loader |
scrapy.contrib.loader.processor |
scrapy.loader.processors |
scrapy.contrib.pipeline |
scrapy.pipelines |
scrapy.contrib.spidermiddleware |
scrapy.spidermiddlewares |
scrapy.contrib.spiders |
scrapy.spiders |
|
scrapy.extensions.* |
複数形の名前変更とモジュールの統合
古い場所 |
新しい場所 |
---|---|
scrapy.command |
scrapy.commands |
scrapy.dupefilter |
scrapy.dupefilters |
scrapy.linkextractor |
scrapy.linkextractors |
scrapy.spider |
scrapy.spiders |
scrapy.squeue |
scrapy.squeues |
scrapy.statscol |
scrapy.statscollectors |
scrapy.utils.decorator |
scrapy.utils.decorators |
クラス名変更
古い場所 |
新しい場所 |
---|---|
scrapy.spidermanager.SpiderManager |
scrapy.spiderloader.SpiderLoader |
Settings renames
古い場所 |
新しい場所 |
---|---|
SPIDER_MANAGER_CLASS |
SPIDER_LOADER_CLASS |
変更ログ¶
新機能と拡張
Pythonロギング (issue 1060, issue 1235, issue 1236, issue 1240, issue 1259, issue 1278, issue 1286)
FEED_EXPORT_FIELDS オプション (issue 1159, issue 1224)
DNSキャッシュサイズとタイムアウトオプション (issue 1132)
xmliter_lxmlで名前空間プレフィックスをサポート (issue 963)
リアクタ・スレッド・プールの最大サイズ設定 (issue 1123)
スパイダーが辞書を返すことを許可します。 (issue 1081)
Response.urljoin() ヘルパーを追加 (issue 1086)
look in ~/.config/scrapy.cfg for user config (issue 1098)
TLS SNI の処理 (issue 1101)
Selectorlistが最初に抽出します (issue 624, issue 1145)
JmesSelect 追加 (issue 1016)
ファイル・システムのhttpキャッシュ・バックエンドにgzip圧縮を追加 (issue 1020)
リンク抽出器でCSSをサポート (issue 983)
httpcache dont_cache meta #19 #689 (issue 821)
スケジューラーによって要求がドロップされたときに送信されるシグナルを追加 (issue 961)
大きなレスポンスのダウンロードを避ける (issue 946)
CSVFeedSpiderでquotecharを指定できるようにします (issue 882)
"Spider error processing" のログ・メッセージにリファラーを追加 (issue 795)
robots.txtを1度だけ処理 (issue 896)
GSoC スパイダー毎の設定 (issue 854)
プロジェクト名の検証を追加 (issue 817)
GSoC API 整理 (issue 816, issue 1128, issue 1147, issue 1148, issue 1156, issue 1185, issue 1187, issue 1258, issue 1268, issue 1276, issue 1285, issue 1284)
IO操作の応答性を高める (issue 1074 と issue 1075)
終了時にhttpcacheのleveldb圧縮を実行 (issue 1297)
非推奨と削除
htmlparserリンク抽出器を非推奨とする (issue 1205)
FeedExporterから非推奨コードを削除 (issue 1155)
leftover for.15 互換性 (issue 925)
CONCURRENT_REQUESTS_PER_SPIDERサポートの終了 (issue 895)
古いエンジン・コードを削除 (issue 911)
SgmlLinkExtractor を非推奨とする (issue 777)
再配置
exporters/__init__.py を exporters.py へ移動 (issue 1242)
基底クラス群をそれぞれのパッケージへ移動 (issue 1218, issue 1233)
モジュール再配置 (issue 1181, issue 1210)
SpiderManager から SpiderLoader へ名前変更 (issue 1166)
djangoitem 削除 (issue 1177)
scrapy deploy コマンド削除 (issue 1102)
contrib_exp 利用解消 (issue 1134)
ルート・フォルダーからbinフォルダー削除。修正: #913 (issue 914)
jsonrpcベースのwebservice削除 (issue 859)
設定内の再配置されたパスの後方非互換性を修正 (issue 1267)
文書
CrawlerProcess文書 (issue 1190)
画面スクレイピングよりもウェブスクレイピングの説明を優先 (issue 1188)
Scrapyチュートリアルのいくつかの改善 (issue 1180)
Files PipelineとImages Pipelineの文書化 (issue 1150)
デプロイメント文書の調整 (issue 1164)
scarpyd-deployとshubをカバーするデプロイメント節を追加 (issue 1124)
プロジェクト・テンプレートに設定を追加 (issue 1073)
概要ページのいくつかの改善 (issue 1106)
docs/topics/architecture.rst内のリンクを更新 (issue 647)
文書 reorder トピック (issue 1022)
Request.meta スペシャル・キーのリストの更新 (issue 1071)
文書: download_timeoutの文書化 (issue 898)
DOCは拡張文書を簡素化 (issue 893)
Leaks 文書群 (issue 894)
文書: アイテム・パイプラインのfrom_crawlerメソッドの文書化 (issue 904)
Spider_errorはdeferredをサポートしていません (issue 1292)
修正と、Sphinx関係の修正 (issue 1220, issue 1219, issue 1196, issue 1172, issue 1171, issue 1169, issue 1160, issue 1154, issue 1127, issue 1112, issue 1105, issue 1041, issue 1082, issue 1033, issue 944, issue 866, issue 864, issue 796, issue 1260, issue 1271, issue 1293, issue 1298)
バグ修正
アイテムの他重継承修正 (issue 353, issue 1228)
ItemLoader.load_item: フィールド達のコピーを反復処理します (issue 722)
Deferredの未処理エラーを修正(RobotsTxtMiddleware) (issue 1131, issue 1197)
DOWNLOAD_TIMEOUTをintとして強制的に読み取る (issue 954)
scary.utils.misc.load_objectは完全なトレース・バックを出力する必要があります (issue 902)
".local" ホスト・ネームのバグを修正 (issue 878)
有効な拡張機能、ミドルウェア、パイプライン情報が印刷されなくなった問題の修正 (issue 879)
metaでfalseに設定された場合のdont_merge_cookiesの不正な動作を修正 (issue 846)
進行中のPython3サポート
twisted.conchが利用できない場合はscrapy.telnetを無効にします (issue 1161)
ajaxcrawl.pyのPython3構文エラーを修正 (issue 1162)
urllibのpython3互換性を高める変更 (issue 1121)
assertItemsEqualは、Python 3でassertCountEqualに名前が変更されました。 (issue 1070)
存在すればunittest.mockをインポートします (issue 1066)
非推奨のcgi.parse_qslを更新して、6つのparse_qslを使用するようにしました (issue 909)
Python3対応移植のデグレを防ぐ (issue 830)
PY3:Python 3にMutableMappingを使用 (issue 810)
PY3: six.BytesIO と six.moves.cStringIO を使用 (issue 803)
PY3: fix xmlrpclib と email のインポートを修正 (issue 801)
PY3: robotparser と urlparse に six を使用します (issue 800)
PY3: six.iterkeys と six.iteritems と tempfile を使用 (issue 799)
PY3: has_keyの修正とsix.moves.configparserの使用 (issue 798)
PY3: six.moves.cPickle の使用 (issue 797)
PY3: Python3でいくつかのテストを実行できるようにします (issue 776)
テスト
py3-ignoresから不要行を削除 (issue 1243)
テストの収集中のpytestからの残りの警告を修正しました (issue 1206)
travisでビルドの文書を追加 (issue 1234)
テスト: 非推奨のモジュールからテストを収集しないでください。 (issue 1165)
警告を防ぐためにテストにservice_identityパッケージをインストール (issue 1168)
テストで非推奨の設定APIを修正しました (issue 1152)
POSTメソッドを使用し、ボディが指定されていないWebクライアントのテストを追加 (issue 1089)
py3-ignores.txtでコメントをサポート (issue 1044)
一部のアサートを最新化する (issue 835)
selector.__repr__ テスト (issue 779)
コードのリファクタリング
CSVFeedSpiderの整理: iterate_spider_outputを使用 (issue 1079)
不要なチェックをscrapy.utils.spider.iter_spider_outputから削除 (issue 1078)
Pydispatch pep8 (issue 992)
walk_modules()から未使用の 'load=False' パラメーターを削除しました (issue 871)
一貫性を保つために、
SpiderState
拡張機能でjob_dir
ヘルパーを使用してください。 (issue 805)"sflo" ローカル変数の名前を、分かりやすい "log_observer" に変更します (issue 775)
Scrapy 0.24.6 (2015-04-20)¶
Python2の下でunicode_escapeを使用して無効なxpathをエンコード (commit 07cb3e5)
IPythonシェル・スコープの問題を修正し、IPythonユーザー構成をロード (commit 2c8e573)
文書の些細なタイプミスを修正 (commit d694019)
些細なタイプミスを修正 (commit f92fa83)
データの抽出で、 sel.xpath() 呼び出しを response.xpath() に変換 (commit c2c6d15)
Scrapy 0.24.5 (2015-02-25)¶
Twisted 15.0.0の新しい _getEndpoint エージェント・シグネチャをサポート (commit 540b9bc)
文書: さらにいくつかの参照が修正されました (commit b4c454b)
文書: 参照を修正 (commit e3c1260)
t.i.b.ThreadedResolver は今や新スタイルのクラス (commit 9e13f42)
S3DownloadHandler: 引用符で囲まれた パス/クエリ・パラメータ を含むリクエストの認証を修正 (commit cdb9a0b)
mailsenderに関する文書の変数タイプを修正 (commit bb3a848)
item_countの代わりにitems_scrapedをリセットします (commit edb07a4)
投稿のためにどの文書を読むべきかについての暫定的な注意メッセージ (commit 7ee6f7a)
mitmproxy 0.10.1 には netlib 0.10.1 も必要です (commit 874fcdd)
mitmproxy 0.10.1 を >0.11 として固定すると、テストでは機能しません (commit c6b21f0)
外部URLに対してではなく、ローカルで解析コマンドをテストします (commit c3a6628)
HTTPDownloadHandlerで接続プールを閉じる際のTwistedの問題にパッチを適用 (commit d0bf957)
動的アイテム・クラスに関する文書を更新 (commit eeb589a)
Lazar-T/patch-3 からのプル・リクエスト #943 をマージ (commit 5fdab02)
タイプミス (commit b0ae199)
Twistedにはpywin32が必要です。 #937 を閉じます (commit 5cb0cfb)
install.rst 更新 (commit 781286b)
Lazar-T/patch-1 からのプル・リクエスト #928 をマージ (commit b415d04)
ピリオド(fullstop)の代わりにコンマ(comma) (commit 627b9ba)
jsma/patch-1 からのプル・リクエスト #885 をマージ (commit de909ad)
request-response.rst を更新 (commit 3f3263d)
SgmlLinkExtractor - Unicodeが存在する <area> タグを解析するための修正 (commit 49b40f0)
Scrapy 0.24.4 (2014-08-09)¶
pemファイルはmockserverによって使用され、scrapyベンチによって必要とされます (commit 5eddc68)
scrapyベンチには scrapy.tests* が必要です (commit d6cb999)
Scrapy 0.24.3 (2014-08-09)¶
0.24のpy3でtravis-ci時間を無駄にする必要はありません (commit 8e080c1)
インストールの文書を更新 (commit 1d0c096)
Scrapyフレームワーク用のtrove classifierがあります! (commit 4c701d7)
w3libバージョンが言及されている他の場所を更新します (commit d109c13)
w3lib要件を1.8.0に更新します (commit 39d2ce5)
w3lib.html.replace_entities() を使って下さい (remove_entities() は非推奨になりました) (commit 180d3ad)
set zip_safe=False (commit a51ee8b)
テストパッケージを出荷しない (commit ee3b371)
sparky.batはもう必要ありません (commit c3861cf)
setup.pyを最新化する (commit 362e322)
ヘッダーは文字列以外の値を処理できません (commit 94a5c65)
ftpテスト・ケースを修正 (commit a274a7f)
travis-ciビルドは完了するのに合計50分ほどかかります (commit ae1e2cc)
shell.rstのタイプミスを更新 (commit e49c96a)
シェルの結果の奇妙なインデントを削除 (commit 1ca489d)
説明の改善、ソースとしてのブログ投稿の明確化、仕様にXPath文字列関数へのリンクの追加 (commit 65c8f05)
UserTimeoutError と ServerTimeouterror の名前変更 #583 (commit 037f6ab)
セレクターの文書にいくつかのxpathのヒントを追加 (commit 2d103e0)
https://github.com/scrapy/w3lib/pull/23 のためのアカウントのテストを修正 (commit f8d366a)
get_func_args最大再帰修正 #728 (commit 81344ea)
#560 に従って入出力プロセッサの例を更新 (commit f7c4ea8)
チュートリアルのPython文法を修正 (commit db59ed9)
トンネリング・プロキシー(tunneling proxy)のテスト・ケースを追加 (commit f090260)
トンネリングを使用しているときにプロキシ認証ヘッダーをリモート・ホストにリークするバグを修正 (commit d8793af)
MIMEタイプが "application/xml" のXHTMLドキュメントからリンクを抽出 (commit ed1f376)
roysc/patch-1からのプル・リクエスト #793 をマージ (commit 91a1106)
commands.rst内のタイプミスを修正 (commit 743e1e2)
settings.overrides.setdefaultのより良いテスト・ケース (commit e22daaf)
http 1.1の定義に従ってCRLFをライン・マーカーとして使用する (commit 5ec430b)
Scrapy 0.24.2 (2014-07-08)¶
非推奨のsettings.overridesおよびsettings.defaults属性をプロキシーするために可変マッピングを使用します (commit e5e8133)
python3はまだサポートされていません (commit 3cd6146)
Python互換バージョンセットをDebianパッケージに更新します (commit fa5d76b)
文書: リリース・ノートの書式を修正 (commit c6a9e20)
Scrapy 0.24.1 (2014-06-27)¶
非推奨のCrawlerSettingsを修正し、.defaults属性との下位互換性を高めます (commit 8e3f20a)
Scrapy 0.24.0 (2014-06-26)¶
機能強化¶
新しいlxmlベースのLinkExtractorを追加して、メンテナンスされていないSgmlLinkExtractorを置き換えます (issue 559, issue 761, issue 763)
設定APIの整理: スパイダー毎の設定の一部 GSoC プロジェクト (issue 737)
Telnetコンソールはデフォルトで127.0.0.1にバインドするようになりました (issue 699)
lxml XPath評価でスマート文字列を無効にする (issue 535)
ファイルシステム・ベースのキャッシュをhttpキャッシュ・ミドルウェアのデフォルトとして復元 (issue 541, issue 500, issue 571)
Scrapyシェルで現在のクローラーを公開 (issue 557)
CSVとXMLエクスポーターを比較するテスト・スイートを改善 (issue 570)
新
offsite/filtered
統計と、新offsite/domains
統計 (issue 566)CrawlSpiderのジェネレーターとしてprocess_linksをサポート (issue 555)
DupeFilterの詳細ログと新しい統計カウンター (issue 553)
MailSender.send()
に mimetype パラメーターを追加 (issue 602)ファイル・パイプライン・ログ・メッセージを一般化 (issue 622)
エンコードできないコード・ポイントをSGMLLinkExtractorのhtmlエンティティに置き換え (issue 565)
SEP文書をrst書式に変換 (issue 629, issue 630, issue 638, issue 632, issue 636, issue 640, issue 635, issue 634, issue 639, issue 637, issue 631, issue 633, issue 641, issue 642)
FormRequestのclickdataのnrインデックスのテストと文書化 (issue 646, issue 645)
他のコンポーネントと同様にダウンローダー・ハンドラーを無効にできるようにします (issue 650)
リダイレクトが多すぎるためにリクエストが破棄されたときにログに記録する (issue 654)
スパイダー・コールバックによって処理されない場合は、エラー・レスポンスをログに記録 (issue 612, issue 656)
ppaの最新のpypiを使用してpypyテストを実行します (issue 674)
trialの代わりにpytestを使用してテスト・スイートを実行します (issue 679)
文書をビルドし、tox環境でリンク切れをチェック (issue 687)
url_is_from_any_domain()
で大文字と小文字を区別しないドメインをサポート (issue 693)プロジェクトおよびスパイダー・テンプレートのpep8警告を削除 (issue 698)
request_fingerprint
関数のテストと文書化 (issue 597)GSoCプロジェクトの
per-spider settings
(スパイダーごとの設定) のSEP-19を更新 (issue 705)規約が失敗した場合、終了コードをゼロ以外に設定 (issue 727)
ダウンロード・コンポーネントとしてインスタンス化されるクラスを制御する設定を追加 (issue 738)
item_dropped
シグナルでレスポンスを渡します (issue 724)spider.closed()
ショートカットの文書化 (issue 719)request_scheduled
シグナルの文書化 (issue 746)セキュリティ問題を報告するときの注記を追加 (issue 697)
scrapy list
コマンドのスパイダー・リスト出力をソート (issue 742)複数の文書の拡張強化と修正 (issue 575, issue 587, issue 590, issue 596, issue 610, issue 617, issue 618, issue 627, issue 613, issue 643, issue 654, issue 675, issue 663, issue 711, issue 714)
バグ修正¶
RegexLinkExtractorでリンクを作成するときにunicode URL値をエンコード (issue 561)
ItemLoaderプロセッサのNone値を無視 (issue 556)
SGMLLinkExtractorとHtmlParserLinkExtractorに内部タグがある場合のリンク・テキストを修正 (issue 485, issue 574)
inspect.stack() の失敗によって引き起こされたエラーを処理 (issue 582)
type()の動的itemclassの使用例を修正 (issue 603)
lucasdemarchi/codespellを使用してタイプミスを修正 (issue 628)
SgmlLinkExtractorのattrs引数のデフォルト値がタプルになるように修正 (issue 661)
サイトマップ・リーダーのXXEの欠陥を修正 (issue 676)
フィルタリングされた開始リクエストをサポートするようにエンジンを修正 (issue 707)
ホスト名のないURLのオフサイト・ミドルウェア・ケースを修正 (issue 745)
TestsuiteはもうPILを必要としません (issue 585)
Scrapy 0.22.2 (released 2014-02-14)¶
存在しないengine.slotsへの参照を修正。 #593 をクローズ (commit 13c099a)
downloaderMW文書のタイプミス(spiderMW文書をコピった半端物) (commit 8ae11bf)
タイプミス修正 (commit 1346037)
Scrapy 0.22.1 (released 2014-02-08)¶
localhost666は特定の状況下で解決できます (commit 2ec2279)
inspect.stackの失敗をテスト (commit cc3eda3)
inspect.stack() が失敗した場合の処理 (commit 8cb44f9)
非推奨クラスのサブクラス化に関する誤ったチェックを修正。 #581 をクローズ (commit 46d98d6)
文書: 最後のスパイダーの例の4スペース・インデント (commit 13846de)
HtmlParserLinkExtractorを修正し、 #485 マージ後にテストします (commit 368a946)
BaseSgmlLinkExtractor: リンクに内部タグがある場合に欠落していたスペースを修正 (commit b566388)
BaseSgmlLinkExtractor: 内部タグ付きのリンクの単体テストを追加 (commit c1cb418)
BaseSgmlLinkExtractor: unknown_endtag() を修正して、終了タグが開始タグと一致する場合にのみ current_link=None を設定するようにしました (commit 7e4d627)
Travis-CIビルドのテストを修正 (commit 76c7e20)
暗号化できないコードポイントをhtmlエンティティに置き換えます。修正 #562 と #285 (commit 5f87b17)
RegexLinkExtractor: リンクを作成するときにURL unicode値をエンコードします (commit d0ee545)
チュートリアルのクロール出力を最新の出力に更新 (commit 8da65de)
クローラー参照でシェル関連文書を更新し、実際のシェル出力を修正 (commit 875b9ab)
PEP8な些細な編集 (commit f89efaf)
Scrapyシェルで現在のクローラーを公開 (commit 5349cec)
未使用のreインポートとPEP8な些細な編集 (commit 387f414)
ItemLoaderを使用するときは、Noneの値を無視します (commit 0632546)
文書: デフォルト値のHTTPCACHE_STORAGEのタイプミスを修正しました。これは、Dbmではなくファイルシステムになりました (commit cde9a8c)
Ubuntuのセットアップ手順をリテラル・コードとして表示 (commit fb5c9c5)
Ubuntuでのインストール手順を更新 (commit 70fb105)
stray-leone/patch-1からのプル・リクエスト #550 をマージ (commit 6f70b6a)
Scrapy Ubuntuパッケージのバージョンを変更 (commit 725900d)
0.22.0のリリース日を修正 (commit af0219a)
news.rstのタイプミスを修正し、(まだリリースされていない)ヘッダーを削除 (commit b7f58f4)
Scrapy 0.22.0 (released 2014-01-17)¶
機能強化¶
[ 後方互換性なし ] HTTPCacheMiddlewareバックエンドをファイルシステムに切り替えました (issue 541) 。 古いバックエンドを復元するには、
HTTPCACHE_STORAGE
をscrapy.contrib.httpcache.DbmCacheStorage
に設定しますCONNECTメソッドを使用して https:// URLをプロキシーします (issue 392, issue 397)
googleによって定義されているajaxクロール可能なページをクロールするミドルウェアを追加 (issue 343)
scrapy.spider.BaseSpider を scrapy.spider.Spider に名前変更 (issue 510, issue 519)
セレクターはデフォルトでEXSLT名前空間を登録します (issue 472)
セレクターの名前変更と同様にアイテム・ローダーを統合する (issue 461)
RFPDupeFilter
クラスを簡単にサブクラス化できるようにします (issue 533)テスト・カバレッジと今後のPython3サポートを改善 (issue 525)
設定とミドルウェアのスタートアップ情報をINFOレベルに出力 (issue 520)
get_func_args
ユーティリティでパーシャル(partial)をサポート (issue 506, issue:504)toxを介して個々にテストを実行できるようにする (issue 503)
リンク抽出器によって無視される拡張機能更新 (issue 498)
ファイル/画像/サムネイル のパスを取得するミドルウェア・メソッドを追加 (issue 490)
オフサイト・ミドルウェア・テストを改善 (issue 478)
RefererMiddlewareによって設定されたデフォルトのRefererヘッダーをスキップする方法を追加 (issue 475)
デフォルトの
Accept-Encoding
ヘッダーでx-gzip
を送信しない (issue 469)設定を使用したhttpエラー処理の定義のサポート (issue 466)
レガシーが見つかった場合は常に最新のPythonイディオムを使用してください (issue 497)
文書の改善と修正 (issue 527, issue 524, issue 521, issue 517, issue 512, issue 505, issue 502, issue 489, issue 465, issue 460, issue 425, issue 536)
修正¶
CrawlSpiderテンプレートのセレクター・クラスのインポートを更新 (issue 484)
engine.slots
への存在しない参照を修正 (issue 464)TextResponse以外のインスタンスで
body_as_unicode()
を呼び出そうとしないでください (issue 462)XPathItemLoaderをサブクラス化するときに警告します。以前は、インスタンス化についてのみ警告していました。 (issue 523)
XPathSelectorをサブクラス化するときに警告します。以前は、インスタンス化についてのみ警告していました。 (issue 537)
FormRequest.from_response()
のURLのオーバーライドを修正 (issue 507)pip 1.5でのテスト・ランナーの修正 (issue 513)
スパイダー名がunicodeの場合のログ・エラーを修正 (issue 479)
Scrapy 0.20.2 (released 2013-12-09)¶
セレクターの変更に伴いCrawlSpiderテンプレートを更新 (commit 6d1457d)
チュートリアルのメソッド名を修正しました。 GH-480 をクローズ ( commit b4fc359 )
Scrapy 0.20.1 (released 2013-11-28)¶
include_package_dataは、公開されたソースからwheelを構築するために必要です (commit 5ba1ad5)
process_parallelは、内部遅延で障害をリークしていました。 #458 をクローズ (commit 419a780)
Scrapy 0.20.0 (released 2013-11-08)¶
機能強化¶
リクエスト/レスポンスのURL/ボディ属性は不変になりました(それらの変更は長い間非推奨でした)
ITEM_PIPELINES
が(リストではなく)辞書として定義されるようになりましたサイトマップ・スパイダーは代替URLを取得できます (issue 360)
Selector.remove_namespaces()
は、要素の属性から名前空間を削除するようになりました。 (issue 416)Python 3.3以降への道を開いた (issue 435, issue 436, issue 431, issue 452)
ネストをサポートするネイティブPythonの型を使用する新しいアイテム・エクスポーター (issue 366)
設定で定義された同時実行性と一致するようにHTTP1.1プール・サイズを調整します (commit b43b5f575)
sparky.mail.MailSenderは、TLS経由で接続するか、STARTTLSを使用してアップグレードできるようになりました (issue 327)
ImagesPipelineから機能が除外された新しいFilesPipeline (issue 370, issue 409)
画像処理にはPILではなくPillowをお勧めします (issue 317)
Ubuntu QuantalおよびRaring用のDebianパッケージを追加しました (commit 86230c0)
モック・サーバー(テストに使用)はHTTPSリクエストをリッスンできます (issue 410)
複数のコア・コンポーネントからマルチ・スパイダー・サポートを削除 (issue 422, issue 421, issue 420, issue 419, issue 423, issue 418)
Travis-CIは、
w3lib
とqueuelib
のPythonパッケージの開発バージョンに対してScrapyの変更をテストするようになりました。継続的インテグレーション・テストにpypy2.1を追加 (commit ecfa7431)
パラメトリック・インポートにはimportlibを使用します (issue 445)
XmlItemExporterに影響するPython2.7.5で導入されたデグレを処理 (issue 372)
SIGINTでのクロール・シャットダウンのバグ修正 (issue 450)
FormRequest.from_response で
reset
型の入力を送信しないでください (commit b326b87)リクエストのerrbackで例外が発生したときにダウンロード・エラーを無視しないでください (commit 684cfc0)
バグ修正¶
Django 1.6でのテストを修正 (commit b6bed44c)
HTTP1.1ダウンロード・ハンドラーを使用して切断時にミドルウェアを再試行するための多くのバグ修正
Twistedリリース間の不整合を修正 (issue 406)
setup.pyの不正な変数名を修正 (issue 429)
チュートリアルの参照を修正 (issue 387)
リクエスト・レスポンス文書群の改善 (issue 391)
ベスト・プラクティス文書の改善 (issue 399, issue 400, issue 401, issue 402)
django統合ドキュメントを改善 (issue 404)
bindaddress
リクエスト・メタの文書化 (commit 37c24e01d7)Request
クラス文書の改善 (issue 226)
その他¶
謝辞¶
このリリースに貢献してくれたすべての人に感謝します!
コミット数でソートされた貢献者のリスト:
69 Daniel Graña <dangra@...>
37 Pablo Hoffman <pablo@...>
13 Mikhail Korobov <kmike84@...>
9 Alex Cepoi <alex.cepoi@...>
9 alexanderlukanin13 <alexander.lukanin.13@...>
8 Rolando Espinoza La fuente <darkrho@...>
8 Lukasz Biedrycki <lukasz.biedrycki@...>
6 Nicolas Ramirez <nramirez.uy@...>
3 Paul Tremberth <paul.tremberth@...>
2 Martin Olveyra <molveyra@...>
2 Stefan <misc@...>
2 Rolando Espinoza <darkrho@...>
2 Loren Davie <loren@...>
2 irgmedeiros <irgmedeiros@...>
1 Stefan Koch <taikano@...>
1 Stefan <cct@...>
1 scraperdragon <dragon@...>
1 Kumara Tharmalingam <ktharmal@...>
1 Francesco Piccinno <stack.box@...>
1 Marcos Campal <duendex@...>
1 Dragon Dave <dragon@...>
1 Capi Etheriel <barraponto@...>
1 cacovsky <amarquesferraz@...>
1 Berend Iwema <berend@...>
Scrapy 0.18.4 (released 2013-10-10)¶
IPythonは名前空間の更新を拒否します。修正 #396 (commit 3d32c4f)
シェルコマンドのリクエストを置き換えるAlreadyCalledErrorを修正しました。 #407 をクローズ (commit b1d8919)
start_requestsの怠惰と早期ハングを修正 (commit 89faf52)
Scrapy 0.18.3 (released 2013-10-03)¶
開始リクエストの遅延評価のデグレを修正 (commit 12693a5)
フォーム: リセット入力を送信しない (commit e429f63)
ユニット・テストのタイムアウトを増やして、travisの誤検知の失敗を減らします (commit 912202e)
jsonエクスポーターのバックポート・マスターの修正 (commit cfc2d46)
sdist tarballを生成する前に権限を修正してumaskを設定します (commit 06149e0)
Scrapy 0.18.1 (released 2013-08-27)¶
チェリー・ピックの変更によって追加された余分なインポートを削除 (commit d20304e)
twisted pre 11.0.0でのクロール・テストを修正 (commit 1994f38)
py26は長さゼロのフィールドをフォーマットできません{} (commit abf756f)
バインドされていないレスポンスでPotentiaDataLossエラーをテストします (commit b15470d)
content-lengthまたはTransfer-Encodingのないレスポンスを適切なレスポンスとして扱います (commit c4bf324)
http11ハンドラーが有効になっていない場合はResponseFailedを含めないでください (commit 6cbe684)
新しいHTTPクライアントは、ResponseFailed例外で失われた接続をラップ(wrap)します。修正 #373 (commit 1a20bba)
travis-ciビルド・マトリックスを制限 (commit 3b01bb8)
peterarenot/patch-1からのプル・リクエスト #375 をマージ (commit fa766d7)
正しいフォルダを参照するように修正 (commit 3283809)
UbuntuリリースをサポートするためにQuantal&Raringを追加 (commit 1411923)
http1クライアントへのアップグレード後に特定の接続エラーを再試行しなかった再試行ミドルウェアを修正し、 GH-373をクローズ (commit bb35ed0)
Python 2.7.4および2.7.5でXmlItemExporterを修正 (commit de3e451)
0.18リリース・ノートの些細な更新 (commit c45e5f1)
寄稿者リストの形式を修正 (commit 0b60031)
Scrapy 0.18.0 (released 2013-08-09)¶
pypiでテストする方法を含む、Toxを使用したテスト・スイートの実行に対する多くの改善
AJAXクロール可能なURLのGETパラメーターを処理 (commit 3fe2a32)
lxmlリカバー・オプションを使用してサイトマップをパースします (issue 347)
バグ修正: Cookieがnetlocではなくホスト名でマージされる (issue 352)
フラグ設定を使用した
HttpCompressionMiddleware
の無効化をサポート (issue 359)XMLFeedSpider
のiternodes
パーサーを使用してxml名前空間をサポートします (issue 12)dont_cache
リクエスト・メタ・フラグをサポート (issue 19)バグ修正: Python 2.7.4の変更により
scrapy.utils.gz.gunzip
が壊れた (commit 4dc76e)バグ修正:
SgmlLinkExtractor
のurlエンコード (issue 24)バグ修正:
TakeFirst
プロセッサは0(ゼロ)値を破棄すべきではありません (issue 59)xmlエクスポーターでネストされたアイテムをサポートする (issue 66)
クッキー処理性能の改善 (issue 77)
重複フィルタリングされたリクエストを1回ログだけ記録します (issue 105)
リダイレクション・ミドルウェアをステータス・ミドルウェアとメタ・ベース・ミドルウェアに分割 (issue 78)
FormRequest.from_response
でのxpathフォーム選択のサポート (issue 185)バグ修正:
SgmlLinkExtractor
のunicodeデコード・エラー (issue 199)バグ修正: pypiインタープリターでのシグナル・ディスパッチ (issue 205)
リクエストの遅延と同時実行処理を改善 (issue 206)
RFC2616キャッシュ・ポリシーを
HttpCacheMiddleware
に追加 (issue 212)エンジンによってログに記録されるメッセージのカスタマイズを許可 (issue 214)
setuptoolsエントリ・ポイントを使用してScrapyコマンドを拡張します (issue 260)
スパイダーの
allowed_domains
値の設定/タプルを許可する (issue 261)settings.getdict
をサポート (issue 269)内部の
scrapy.core.scraper
スロット処理を簡素化 (issue 271)Item.copy
追加 (issue 290)アイドル状態のダウンローダー・スロットを収集する (issue 297)
ftp://
スキームのダウンローダー・ハンドラー追加 (issue 329)ダウンローダー・ベンチマーク・ウェブサーバーとスパイダー・ツールを追加 ベンチマーキング
(ディスク上の)永続的なキューを、Scrapyが依存する別のプロジェクト( queuelib )に移動しました
外部ライブラリを使用してScrapyコマンドを追加 (issue 260)
scrapy
コマンドライン・ツールに--pdb
オプションを追加XPathSelector.remove_namespaces
を追加しました。これにより、便利にXML文書からすべての名前空間を削除できます(名前空間のないXPathを操作するため)。 セレクター に記載されています。スパイダー規約のいくつかの改善
meta-refreshhtmlタグのリダイレクトを処理するMetaRefreshMiddldewareという名前の新しいデフォルトのミドルウェア、
MetaRefreshMiddldewareとRedirectMiddlewareには、 #62 に対処するための異なる優先順位があります
スパイダーにfrom_crawlerメソッド追加
モック・サーバーによるシステムテストを追加
macOS互換性のさらなる改善(Alex Cepoiに感謝)
シングルトンとマルチ・スパイダーのサポートに対するさらにいくつかの整理(Nicolas Ramirezに感謝)
カスタム・ダウンロード・スロットをサポート
"shell" コマンドに --spider オプション追加。
Scrapyの起動時にオーバーライドされた設定をログに記録する
このリリースに貢献してくれたすべての人に感謝します。コミット数でソートされた貢献者のリストは以下のとおりです:
130 Pablo Hoffman <pablo@...>
97 Daniel Graña <dangra@...>
20 Nicolás Ramírez <nramirez.uy@...>
13 Mikhail Korobov <kmike84@...>
12 Pedro Faustino <pedrobandim@...>
11 Steven Almeroth <sroth77@...>
5 Rolando Espinoza La fuente <darkrho@...>
4 Michal Danilak <mimino.coder@...>
4 Alex Cepoi <alex.cepoi@...>
4 Alexandr N Zamaraev (aka tonal) <tonal@...>
3 paul <paul.tremberth@...>
3 Martin Olveyra <molveyra@...>
3 Jordi Llonch <llonchj@...>
3 arijitchakraborty <myself.arijit@...>
2 Shane Evans <shane.evans@...>
2 joehillen <joehillen@...>
2 Hart <HartSimha@...>
2 Dan <ellisd23@...>
1 Zuhao Wan <wanzuhao@...>
1 whodatninja <blake@...>
1 vkrest <v.krestiannykov@...>
1 tpeng <pengtaoo@...>
1 Tom Mortimer-Jones <tom@...>
1 Rocio Aramberri <roschegel@...>
1 Pedro <pedro@...>
1 notsobad <wangxiaohugg@...>
1 Natan L <kuyanatan.nlao@...>
1 Mark Grey <mark.grey@...>
1 Luan <luanpab@...>
1 Libor Nenadál <libor.nenadal@...>
1 Juan M Uys <opyate@...>
1 Jonas Brunsgaard <jonas.brunsgaard@...>
1 Ilya Baryshev <baryshev@...>
1 Hasnain Lakhani <m.hasnain.lakhani@...>
1 Emanuel Schorsch <emschorsch@...>
1 Chris Tilden <chris.tilden@...>
1 Capi Etheriel <barraponto@...>
1 cacovsky <amarquesferraz@...>
1 Berend Iwema <berend@...>
Scrapy 0.16.5 (released 2013-05-30)¶
Scrapyデプロイが新しいエンドポイントにリダイレクトされるときにリクエスト・メソッドに従います (commit 8c4fcee)
不正確なダウンローダー・ミドルウェアの文書を修正。 refs #280 (commit 40667cb)
文書: 現在利用できなくなったdiveintopython.orgへのリンクを削除。 #246 をクローズ (commit bd58bfa)
不正なhtml5ドキュメントでフォーム・ノードを検索します (commit e3d6945)
リストの代わりにタイプミスのラベル付け属性タイプboolを修正 (commit a274276)
Scrapy 0.16.4 (released 2013-01-23)¶
文書のスペルミスを修正 (commit 6d2b3aa)
拡張機能の無効化に関する文書を追加。 refs #132 (commit c90de33)
エラー・メッセージの書式を修正しました。 log.err() はクールな書式をサポートしておらず、エラーが発生した場合、メッセージは "ERROR: Error processing %(item)s" でした。 (commit c16150c)
lintおよび画像パイプライン・エラーのロギングの改善 (commit 56b45fc)
文書のタイプミスを修正 (commit 243be84)
文書トピックを追加: 幅広いクロールと一般的な慣行 (commit 1fbb715)
スパイダーが明示的に指定されていない場合のScrapy parseコマンドのバグを修正。 #209 をクローズ (commit c72e682)
docs/topics/commands.rst を更新 (commit 28eac7a)
Scrapy 0.16.3 (released 2012-12-07)¶
ダウンロード遅延を使用する場合の同時実行制限を削除し、リクエスト間の遅延が強制されるようにします (commit 487b9b5)
画像パイプラインが失敗したときにエラーの詳細を追加 (commit 8232569)
macOS互換性を改善 (commit 8dcf8aa)
setup.py: README.rstを使用してlong_descriptionにデータを入力します (commit 7b5310d)
文書: ClientFormへの廃止された参照を削除 (commit 80f9bb6)
デフォルトのストレージ・バックエンドの正しい文書 (commit 2aa491b)
文書: FAQから壊れたproxyhubリンクを削除 (commit bdf61c4)
SpiderOpenCloseLoggingの例の文書のタイプミスを修正 (commit 7184094)
Scrapy 0.16.2 (released 2012-11-09)¶
Scrapy規約: python2.6 compat (commit a4a9199)
Scrapy規約の詳細なオプション (commit ec41673)
Scrapy規約トの適切なユニット・テストのような出力 (commit 86635e4)
open_in_browserをデバッグ文書に追加 (commit c9b690d)
設定文書からグローバルScrapy統計への参照を削除 (commit dd55067)
WindowsプラットフォームのSpiderStateバグを修正 (commit 58998f4)
Scrapy 0.16.1 (released 2012-10-26)¶
0.16リリースの前に間違ったマージの後に壊れていたLogStats拡張機能を修正 (commit 8c780fd)
scarp.conf.settingsの下位互換性が向上しました (commit 3403089)
拡張機能からクローラー統計にアクセスする方法に関する拡張文書 (commit c4da0b5)
.hgtagsを削除しました(Scrapyがgitを使用するようになったため、不要になりました) (commit d52c188)
最初のヘッダーの下のダッシュを修正 (commit fa4f7f9)
リリース・ノートの0.16.0にリリース日を設定 (commit e292246)
Scrapy 0.16.0 (released 2012-10-18)¶
Scrapyの変更:
追加された スパイダー規約(contract) は、形式的/再現可能な方法でスパイダーをテストするためのメカニズムです。
runspider
コマンドにオプション-o
と-t
を追加しましたAutoThrottle拡張機能 を文書化し、デフォルトでインストールされる拡張機能に追加しました。あなたはいまだ
AUTOTHROTTLE_ENABLED
でそれを有効にする必要があります主要な統計コレクションのリファクタリング: グローバル/スパイダーごとの統計の分離を削除し、統計関連の信号(
stats_spider_opened
など)を削除しました。統計がはるかにシンプルになり、Stats Collector APIとシグナルで下位互換性が維持されます。スパイダー・ミドルウェアに
process_start_requests()
メソッドを追加したSignalsシングルトンを削除しました。これで、Crawler.signals属性を介してシグナルにアクセスできるようになります。詳細については、シグナルのドキュメントを参照してください。
StatsCollectorシングルトンを削除しました。 Crawler.stats属性を介して統計にアクセスできるようになりました。 詳細については、統計コレクションのドキュメントを参照してください。
コアAPI について文書化した
libxml2
に代わり、 今やlxml
がデフォルトのセレクター・バックエンドですFormRequest.from_response() を移植して、 ClientForm の代わりに lxml を使用する
モジュール削除:
scrapy.xlib.BeautifulSoup
とscrapy.xlib.ClientForm
SitemapSpider: 間違ったコンテンツ・タイプを主張(advertise)する場合、つまり、.xml および .xml.gz で終わるサイトマップURLのサポートが追加されました (commit 10ed28b)
StackTraceDump拡張機能: trackrefライブ参照もダンプします (commit fe2ce93)
ネストされたアイテムがJSONおよびJSONLinesエクスポーターで完全にサポートされるようになりました
スパイダーごとに複数のCookieセッションをサポートするための
cookiejar
リクエスト・メタ・キーを追加しましたエンコーディング検出コードを w3lib.encoding に分離し、そのモジュールを使用するためにScrapyコードを移植しました
Python 2.5 のサポートを終了しました。https://blog.scrapinghub.com/2012/02/27/scrapy-0-15-dropping-support-for-python-2-5/ 参照
Twisted 2.5 のサポートを終了した
リファラー・ミドルウェアを制御するために
REFERER_ENABLED
設定を追加しましたデフォルトのユーザーエージェントを
Scrapy/VERSION (+http://scrapy.org)
に変更しましたscrapy.contrib.linkextractors.image
からHTMLImageLinkExtractor
クラスを削除(文書化されていない)スパイダーごとの設定を削除しました(複数のクローラーオブジェクトをインスタンス化することで置き換えられます)
USER_AGENT
スパイダー属性はもはや動作しません。代わりにuser_agent
属性を使って下さい。DOWNLOAD_TIMEOUT
スパイダー属性はもはや動作しません。代わりにdownload_timeout
属性を使って下さい。エンコーディングの自動検出が w3lib ライブラリに移動されたため、
ENCODING_ALIASES
設定が削除されましたDjangoItem をメインの投稿に昇格
LogFormatterメソッドは、遅延フォーマットをサポートするために、(文字列ではなく)辞書を返すようになりました (issue 164, commit dcef7b0)
ダウンローダー・ハンドラー(
DOWNLOAD_HANDLERS
設定)は、__init__
メソッドの最初の引数として設定を受け取るようになりましたメモリ使用量のカウントを(より移植性の高い) resource モジュールに置き換え、
scrapy.utils.memory
モジュールを削除しましたシグナル削除した:
scrapy.mail.mail_sent
TRACK_REFS
設定を削除し、 trackrefs が常に有効になりましたDBMがHTTPキャッシュ・ミドルウェアのデフォルトのストレージ・バックエンドになりました
(レベルごとの)ログ・メッセージの数がScrapy統計(統計名:
log_count/LEVEL
)で追跡されるようになりました受信したレスポンスの数がScrapy統計(統計名:
response_received_count
)で追跡されるようになりましたscrapy.log.started
属性を削除した
Scrapy 0.14.4¶
サポートされているUbuntuディストリビューションに追加されました (commit b7e46df)
https://groups.google.com/forum/#!topic/scrapy-users/qgVBmFybNAQ/discussionで報告されたjson-rpcWebサービスのバグを修正しました。 また、extras/scrapy-ws.pyからサポートされなくなった 'run' コマンドも削除されました
content-type http equivのメタ・タグ属性は、任意の順序にすることができます。 #123 (commit 0cb68af)
"import Image" をより標準的な "from PIL import Image" に置き換えます。 #88 をクローズ (commit 4d17048)
trialステータスを bin/runtests.sh 終了値として返します。 #118 (commit b7b2e7f)
Scrapy 0.14.3¶
pydispatchライセンスを含めるのを忘れていました。 #118 (commit fd85f9c)
testsuiteが使用するeggファイルをソース配布に含めます。 #118 (commit c897793)
高度な機能と見なされる可能性のあるgenspiderコマンドとの混同を避けるために、プロジェクト・テンプレートのdocstringを更新します。 refs #107 (commit 2548dcc)
グーグル・ディレクトリがシャットダウンされることについての注記を docs/topics/firebug.rst に追加 (commit 668e352)
空のときにスロットを破棄しないでください。必要に応じて再度リサイクルするために、別の辞書に保存してください。 (commit 8e9f607)
libxml2でサポートされているセレクターでのunicode xpathの処理に失敗しないでください (commit b830e95)
リクエスト・オブジェクトの文書の些細な間違いを修正 (commit bf3c9ee)
リンク抽出器の文書の些細な欠陥を修正 (commit ba14f38)
Scrapyでのsqliteサポートに関連するいくつかの廃止済のコードの残りを削除 (commit 0665175)
Scrapy 0.14.2¶
チェックサムを計算する前に、ファイルの先頭を指すバッファを移動します。 refs #92 (commit 6a5bef2)
画像を永続化する前に、画像のチェックサムを計算します。 #92 をクローズ (commit 9817df1)
キャッシュされた障害でリークしている参照を削除 (commit 673a120)
MemoryUsage拡張機能のバグを修正した: get_engine_status() は正確に1つの引数を取ります(0個しか与えられていない) (commit 11133e9)
http圧縮ミドルウェアのstruct.errorを修正。 #87 をクローズ (commit 1423140)
ajaxクロールはunicode URLに対して拡張されていませんでした (commit 0de3fb4)
start_requests イテレータ・エラーをキャッチします。 refs #83 (commit 454a21d)
libxml2 XPathSelector の速度向上 (commit 2fbd662)
最近の変更に応じてバージョン管理文書を更新 (commit 0a070f5)
scrapyd: 文書のリンク修正 (commit 2b4e4c3)
extras/makedeb.py: gitからバージョンを取得しなくなりました (commit caffe0e)
Scrapy 0.14.1¶
extras/makedeb.py: gitからバージョンを取得しなくなりました (commit caffe0e)
バージョンを0.14.1に上げました (commit 6cb9e1c)
チュートリアル・ディレクトリへの参照を修正 (commit 4b86bd6)
文書: Request.replace() から重複したコールバック引数を削除 (commit 1aeccdd)
scrapyd文書の書式を修正 (commit 8bf19e6)
実行中のすべてのスレッドのスタックをダンプし、StackTraceDump拡張機能によってダンプされたエンジン・ステータスを修正します (commit 14a8e6e)
boto画像のアップロードでSSLを無効にする理由についてのコメントを追加 (commit 5223575)
S3への並列接続が多すぎるとSSLハンドシェイクがハングします (commit 63d583d)
dmozサイトの変更に従うようにチュートリアルを変更 (commit bcb3198)
Twisted>=11.1.0 での _disconnectedDeferred AttributeError 例外を回避します (commit 98f3f87)
スパイダーがオート・スロットルの最大同時実行性を設定できるようにする (commit 175a4b5)
Scrapy 0.14¶
新機能と新設定¶
AJAX crawleable urls (AJAXクロール可能URL)をサポート
リクエストをディスクに保存し、クロールを一時停止および再開できる新しい永続スケジューラ (r2737)
スクレイピングされたアイテムをファイルにダンプするためのショートカットである
scrapy crawl
に-o
オプションを追加しました(または-
を使用した標準出力)Scrapyd
schedule.json
apiにカスタム設定を渡すためのサポートが追加されました (r2779, r2783)chunked transfer encoding (チャンク転送エンコーディング) をサポートするための新しい
ChunkedTransferMiddleware
(デフォルトで有効) (r2769)S3ダウンローダー・ハンドラーにboto 2.0サポートを追加 (r2763)
リクエストのエラー・バックで、問題のあるリクエストが
failure.request
属性で受信されるようになりました (r2738)- ドメイン/IPごとの同時実行制限をサポートするための大きなダウンローダーのリファクタリング (r2732)
CONCURRENT_REQUESTS_PER_SPIDER
設定は非推奨になり、以下のように置き換えられました:
詳細については、ドキュメントを確認してください
組み込みのキャッシュDNSリゾルバーを追加 (r2728)
Amazon AWS関連のコンポーネント/拡張機能(SQSスパイダー・キュー、SimpleDB統計コレクター)を別のプロジェクトに移動しました: [scaws](https://github.com/scrapinghub/scaws) (r2706, r2714)
scrapydのスパイダー・キューを移動した:
scrapy.spiderqueue
からscrapyd.spiderqueue
へ (r2708)scrapydのsqliteユーティリティを移動した:
scrapy.utils.sqlite
からscrapyd.sqlite
へ (r2781)start_requests()
メソッドでイテレータを返すための実際のサポート。 スパイダーがアイドル状態になっているクロール中にイテレーターが消費されるようになりました (r2704)リダイレクト・ミドルウェアをすばやく有効/無効にする
REDIRECT_ENABLED
設定を追加 (r2697)再試行ミドルウェアをすばやく有効/無効にする
RETRY_ENABLED
設定を追加 (r2694)スパイダーを手動で閉じるための
CloseSpider
例外を追加 (r2691)HTML5 meta charset 宣言のサポートを追加することによるエンコーディング検出の改善 (r2690)
スパイダーを閉じる前に、すべてのダウンロードが終了してスパイダーによって処理されるのを待つように、スパイダーを閉じる動作をリファクタリングしました (r2688)
SitemapSpider
を追加(Spiders pageの文書参照) (r2658)基本的な統計(クロールされたページやスクレイピングされたアイテムなど)を定期的にログに記録するための
LogStats
拡張機能が追加されました (r2657)gzip圧縮されたレスポンスの処理をより堅牢にします (#319, r2643) 。これで、Scrapyは、
IOError
で失敗するのではなく、gzip圧縮されたレスポンスから可能な限り解凍しようとします。メモリ・デバッグ情報をダンプするための統計を使用するための簡略化された !MemoryDebugger 拡張機能 (r2639)
スパイダーを編集するための新しいコマンドを追加しました:
scrapy edit
(r2636) と、-e
フラグをそれを使用するgenspider
コマンドに追加しました (r2653)アイテムのデフォルトの表現をきれいに印刷される辞書に変更しました。 (r2631) 。これにより、Scraped行とDropped行の両方について、デフォルトの場合にログが読みやすくなるため、デフォルトのログが改善されます。
spider_error
シグナル追加 (r2628)COOKIES_ENABLED
設定追加 (r2625)統計がScrapyログにダンプされるようになりました(
STATS_DUMP
設定のデフォルト値がTrue
に変更されました)。これは、ScrapyユーザーがScrapyの統計とそこで収集されるデータをより認識できるようにするためです。ダウンロード遅延と最大同時リクエストを動的に調整するためのサポートが追加されました (r2599)
新しいDBM HTTPキャッシュ・ストレージ・バックエンドを追加 (r2576)
Scrapyd へ
listjobs.json
API を追加 (r2571)CsvItemExporter
:join_multivalued
パラメーター追加 (r2578)xmliter_lxml
に名前空間のサポートを追加 (r2552)COOKIES_DEBUG
をより良くし、それを文書化することにより、Cookieミドルウェアを改善しました (r2579)ScrapydおよびLink抽出器のいくつかの改善
コードの再配置と削除¶
- 過去に混乱を招くことが多かったため、マージされたアイテムの通過(pass)とアイテムのスクレイプの概念について以下の変更 (r2630) :
元のitem_scrapedシグナルが削除されました
元のitem_passedシグナルはitem_scrapedに名前が変更されました
古いログ行の
Scraped Item...
は削除されました古いログ行の
Passed Item...
はScraped Item...
に名前変更され、DEBUG
レベルに降格されました
未使用関数削除:
scrapy.utils.request.request_info()
(r2577)examples/googledir
からgoogledirプロジェクトを削除しました。 GitHubで利用可能なdirbot
と呼ばれる新しいサンプル・プロジェクトがあります: https://github.com/scrapy/dirbotScrapyアイテムのデフォルト・フィールド値のサポートを削除 (r2616)
実験的な crawlspider v2 を削除 (r2632)
アーキテクチャを簡素化するためにスケジューラ・ミドルウェアを削除しました。 重複フィルターは、以前と同じ重複フィルター・クラスを使用して、スケジューラー自体で実行されるようになりました(
DUPEFILTER_CLASS
設定) (r2640)scrapy crawl
コマンドにURLを渡すためのサポートを削除しました(代わりにscrapy parse
を使用してください) (r2704)非推奨の実行キュー(Execution Queue)を削除 (r2704)
削除された(文書化されていない)(scrapy.contrib.spidercontextからの)スパイダー・コンテキスト拡張 (r2780)
CONCURRENT_SPIDERS
設定を削除しました(代わりにscrapyd maxprocを使用してください) (r2789)コア・コンポーネントの属性の名前が変更されました: downloader.sites → downloader.slots、 scraper.sites → scraper.slots (r2717, r2718)
設定の名前を
CLOSESPIDER_ITEMPASSED
からCLOSESPIDER_ITEMCOUNT
に変更しました (r2655) 。下位互換性は維持されます。
Scrapy 0.12¶
#NNN形式の番号は古い課題トラッカー(issue tracker)(Trac)の参照チケット番号なので、もはや利用できません。
新機能と改善点¶
渡されたアイテムは、
item_passed
のitem
引数で送信されるようになりました (#273)バグ・レポートに役立つ
scrapy version
コマンドにverboseオプションを追加しました (#298)HTTPキャッシュがデフォルトでプロジェクト・データ・ディレクトリに保存されるようになりました (#279)
プロジェクト用データ保存ディレクトリ追加 (#276, #277)
Scrapyプロジェクトのファイル構成について文書化(コマンドライン・ツール文書参照)
XPathセレクター用の新しいlxmlバックエンド (#147)
スパイダー毎の設定 (#245)
Scrapyコマンドのエラーを通知するための終了コードをサポートします (#248)
scrapy shell
コマンドに-c
引数を追加したlibxml2
をオプションにしました (#260)新
deploy
コマンド (#261)CLOSESPIDER_PAGECOUNT
設定を追加 (#253)CLOSESPIDER_ERRORCOUNT
設定を追加 (#254)
Scrapydの変更¶
Scrapydはスパイダーごとに1つのプロセスを使用するようになりました
スパイダーの実行ごとに1つのログファイルを保存し、スパイダーごとに最新の5つのログを保持してローテーションします(デフォルト)
最小限のWebUIが追加され、デフォルトでは http://localhost:6800 が有効です。
現在のプロジェクトのScrapydサーバを起動するために
scrapy server
コマンドが用意されました
設定の変更¶
HTTPキャッシュミドルウェアを有効にするための
HTTPCACHE_ENABLED
設定(デフォルトではFalse)を追加HTTPCACHE_EXPIRATION_SECS
セマンティクスを変更しました: ゼロは「期限切れにならない」ことを意味します。
非推奨/廃止された機能¶
Scrapydサーバーを起動する
server
コマンドを優先して、runserver
コマンドは非推奨になりました。Scrapydの変更も参照して下さい。Scrapyd `` schedule.json`` APIの使用を優先して、
queue
コマンドが非推奨になりました。Scrapydの変更も参照して下さい。!LxmlItemLoader(メインの投稿に昇格したことのない実験的な投稿)を削除しました
Scrapy 0.10¶
#NNN形式の番号は古い課題トラッカー(issue tracker)(Trac)の参照チケット番号なので、もはや利用できません。
新機能と改善点¶
Scrapyクローラーを実稼働環境に展開するための
scrapyd
と呼ばれる新しいScrapyサービス(#218)(ドキュメントあり)独自の画像パイプラインをサブクラス化する必要がない簡略化された画像パイプラインの使用法 (#217)
ScrapyシェルにデフォルトでScrapyログが表示されるようになりました (#206)
共通ベース・コードのリファクタリングされた実行キューと "spider queues" と呼ばれる着脱可能なバックエンド (#220)
デフォルトで利用可能な新しい(SQLiteベースの)永続スパイダー・キュー (#198) 。サーバー・モードでScrapyを起動し、スパイダーの実行をスケジュールできます。
Scrapyコマンドライン・ツールとそのすべての利用可能なサブ・コマンドの文書を追加(文書が利用可能)
着脱可能なバックエンドを備えたフィード・エクスポーター (#197) (文書が利用可能)
遅延(deferred)シグナル (#193)
アイテム・パイプラインに2つの新しいメソッド open_spider() と、 deferredサポート付きの close_spider() を追加しました (#195)
スパイダーごとのデフォルトのリクエスト・ヘッダーのオーバーライドのサポート (#181)
デフォルトのSpiderManagerを、同様の機能を持つがTwisted Pluginsに依存しないものに置き換えました (#186)
二つのパッケージに分割さDebianパッケージ - ライブラリとサービス (#187)
Scrapyログ機能リファクタリング (#188)
異なる実行間で永続的なスパイダー・コンテキストを維持するための新しい拡張機能 (#203)
リダイレクトを回避するための
dont_redirect
request.meta キーを追加 (#233)再試行を回避するための
dont_retry
request.metaキーを追加 (#234)
コマンドライン・ツールの変更¶
古い
scrapy-ctl.py
を置き換える新しいscrapy
コマンド (#199) 。プロジェクト毎に一つのscrapy-ctl.py
ではなく、グローバルなscrapy
コマンドが1つだけになりました。Windowsからより便利に実行するためのscrapy.bat
スクリプトを追加しました。コマンドライン・ツールにbash補完を追加 (#210)
コマンド
start
をrunserver
に名前変更 (#209)
API変更¶
Requestオブジェクトの
url
とbody
属性は今や読み取り専用です (#230)Request.copy()
とRequest.replace()
は、それらのcallback
とerrback
属性もコピーするようになりました (#231)scrapy.contrib
からUrlFilterMiddleware
を削除しました(デフォルトでは既に無効になっています)オフサイト・ミドルウェアは、allowed_domains属性を持たないスパイダーからのリクエストを除外しません (#225)
Spider Manager の
load()
メソッドを削除。今やスパイダーは__init__
メソッドそれ自身によってロードされるます。- Scrapyマネージャーを変更しました(今や "Crawler" といわれます):
scrapy.core.manager.ScrapyManager
クラスはscrapy.crawler.Crawler
に名前変更しました。scrapy.core.manager.scrapymanager
シングルトンはscrapy.project.crawler
に移動しました。
モジュール移動:
scrapy.contrib.spidermanager
からscrapy.spidermanager
へSpiderManager シングルトンが
scrapy.spider.spiders
からscrapy.project.crawler
シングルトンのspiders
属性に移動しました。- 統計収集クラス群を移動した: (#204)
scrapy.stats.collector.StatsCollector
からscrapy.statscol.StatsCollector
へscrapy.stats.collector.SimpledbStatsCollector
からscrapy.contrib.statscol.SimpledbStatsCollector
へ
コマンドごとのデフォルト設定が、コマンド・オブジェクト・クラスの
default_settings
属性で指定されるようになりました (#201)- Itemパイプライン
process_item()
メソッドの引数を(spider, item)
から(item, spider)
に変更しました 後方互換性の維持(非推奨警告付き)
- Itemパイプライン
scrapy.core.signals
モジュールをscrapy.signals
へ移動した後方互換性の維持(非推奨警告付き)
scrapy.core.exceptions
モジュールをscrapy.exceptions
へ移動した後方互換性の維持(非推奨警告付き)
BaseSpider
にhandles_request()
クラス・メソッド追加scrapy.log.exc()
関数を削除 (代わりにscrapy.log.err()
を使ってください)scrapy.log.msg()
関数のcomponent
引数を削除scrapy.log.log_level
属性を削除Spider Manager と Item Pipeline Manager に
from_settings()
クラス・メソッドを追加
設定の変更¶
!HttpCacheMiddlewareの特定のスキームを無視するための
HTTPCACHE_IGNORE_SCHEMES
設定を追加 (#225)使用するスパイダー・キューを定義する
SPIDER_QUEUE_CLASS
設定を追加 (#220)KEEP_ALIVE
設定を追加 (#220)SERVICE_QUEUE
設定を削除 (#220)COMMANDS_SETTINGS_MODULE
設定を削除 (#201)REQUEST_HANDLERS
の名前をDOWNLOAD_HANDLERS
に変更し、(関数の代わりに)ダウンロード・ハンドラー・クラスを作成しました
Scrapy 0.9¶
#NNN形式の番号は古い課題トラッカー(issue tracker)(Trac)の参照チケット番号なので、もはや利用できません。
新機能と改善点¶
scrapy.mailにSMTP-AUTHサポートを追加。
新設定追加:
MAIL_USER
,MAIL_PASS
(r2065 | #149)新しいscrapy-ctlviewコマンドを追加 - Scrapyで見られるように、ブラウザーでURLを表示します (r2039)
Scrapyプロセスを制御するためのWebサービスが追加されました(これにより、Webコンソールも非推奨になります。 (r2053 | #167)
本番システムの為に、Scrapyをサービスとして実行するためのサポート (r1988, r2054, r2055, r2056, r2057 | #168)
ラッパー帰納(wrapper induction)ライブラリを追加しました(文書は現在ソースコードでのみ利用可能です)。 (r2011)
LOG_ENCODING
設定追加 (r1956, 文書あり)RANDOMIZE_DOWNLOAD_DELAY
設定を追加(デフォルトで有効) (r1923, 文書あり)MailSender
はもはや入出力ブロッキングしません (r1955 | #146)Linkextractors と 新しい Crawlspider は今や相対ベースタグURLを処理するようになりました (r1960 | #148)
アイテムローダーとプロセッサのいくつかの改善 (r2022, r2023, r2024, r2025, r2026, r2027, r2028, r2029, r2030)
telnetコンソールに変数を追加するためのサポートが追加されました (r2047 | #165)
コールバックなしのリクエストのサポート (r2050 | #166)
API変更¶
Spider.domain_name
からSpider.name
へ変更 (SEP-012, r1975)Response.encoding
は今やエンコーディングを検知します (r1961)HttpErrorMiddleware
は今やNoneを返すか、または例外を引き起こします (r2006 | #157)スクラップするためのフィード・スパイダーのための
ExecutionQueue
を追加 (r2034)ExecutionEngine
シングルトンを削除 (r2039)botoとスレッドを使用するために
S3ImagesStore
(画像パイプライン)を移植しました (r2033)モジュール移動:
scrapy.management.telnet
をscrapy.telnet
へ (r2047)
Scrapy 0.8¶
#NNN形式の番号は古い課題トラッカー(issue tracker)(Trac)の参照チケット番号なので、もはや利用できません。
新機能¶
後方互換性のない変更¶
scrapy.utils.response.get_meta_refresh()
シグネチャを変更した (r1804)scrapy.item.ScrapedItem
class を非推奨削除。代わりにscrapy.item.Item
を使って下さい (r1838)scrapy.xpath
モジュールを非推奨削除。代わりにscrapy.selector
を使って下さい。 (r1836)core.signals.domain_open
シグナルを非推奨削除。代わりにcore.signals.domain_opened
を使って下さい (r1822)log.msg()
は今やspider
引数を受け入れます (r1822)古いドメイン引数は非推奨になり、0.9で削除される予定です。 スパイダーの場合は、常に
spider
引数を使用し、スパイダーへの参照を渡す必要があります。 本当に文字列を渡したい場合は、代わりにcomponent
引数を使用してください。
コア・シグナル
domain_opened
,domain_closed
,domain_idle
を変更した- ドメインの代わりにスパイダーを使用するようにアイテム・パイプラインを変更しました
process_item()
アイテム・パイプライン・メソッドのdomain
引数がspider
に変更され、新しいシグネチャは次のようになります:process_item(spider, item)
(r1827 | #105)(Scrapy 0.8で動作するように)コードをすばやく移植するには、以前に
domain
を使用していたあなたは、spider.domain_name
を使用するだけです。
- ドメインの代わりにスパイダーを使用するようにStatsAPIを変更しました (r1849 | #113)
StatsCollector
は、そのメソッド(set_value
、inc_value
など)で(ドメインではなく)スパイダーへの参照を受け取るように変更されました。StatsCollector.iter_spider_stats()
メソッドを追加StatsCollector.list_domains()
メソッドを削除また、Statsシグナルの名前が変更され、(ドメインではなく)スパイダーへの参照を渡すようになりました。 変更の概要は以下のとおりです:
(Scrapy 0.8で動作するように)コードをすばやく移植するには、以前に
domain
を使用していたあなたはspider.domain_name
を使用するだけです。spider_stats
には、domain_stats
とまったく同じデータが含まれています。
CloseDomain
拡張機能がscrapy.contrib.closespider.CloseSpider
に移動しました (r1833)- 以下の設定は名前を変更しました:
CLOSEDOMAIN_TIMEOUT
からCLOSESPIDER_TIMEOUT
へCLOSEDOMAIN_ITEMCOUNT
からCLOSESPIDER_ITEMCOUNT
へ
削除
SCRAPYSETTINGS_MODULE
環境変数を非推奨のため削除。代わりにSCRAPY_SETTINGS_MODULE
を使ってください。 (r1840)名前変更 設定:
REQUESTS_PER_DOMAIN
をCONCURRENT_REQUESTS_PER_SPIDER
へ (r1830, r1844)名前変更 設定:
CONCURRENT_DOMAINS
をCONCURRENT_SPIDERS
へ (r1830)HTTPキャッシュ・ミドルウェアのリファクタリング
HTTPキャッシュミドルウェアは大幅にリファクタリングされましたが、削除されたドメイン・セクター化(sectorization)を除いて同じ機能を保持しています。 (r1843 )
名前変更 例外
DontCloseDomain
をDontCloseSpider
へ (r1859 | #120)名前変更 エクステンション:
DelayedCloseDomain
をSpiderCloseDelay
へ (r1861 | #121)削除
scrapy.utils.markup.remove_escape_chars
関数を廃止。代わりにscrapy.utils.markup.replace_escape_chars
を使ってください (r1865)
Scrapy 0.7¶
Scrapyの最初のリリース。