リリース・ノート¶
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.HtmlParserLinkExtractorregex.RegexLinkExtractorsgml.BaseSgmlLinkExtractorsgml.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.DataURIDownloadHandlerscrapy.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 の位置を右に移動しました。
以下のクラス属性が追加されました:
crawlerdownstream_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_PARSERandROBOTSTXT_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.commandscrapy.contrib(と、全てのサブモジュール)scrapy.contrib_exp(と、全てのサブモジュール)scrapy.dupefilterscrapy.linkextractorscrapy.projectscrapy.spiderscrapy.spidermanagerscrapy.squeuescrapy.statsscrapy.statscolscrapy.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)ptpythonREPL をサポートしました (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.MultiValueDictKeyErrorscrapy.utils.datatypes.MultiValueDictscrapy.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.ClientFormSitemapSpider: 間違ったコンテンツ・タイプを主張(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_sentTRACK_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.jsonapiにカスタム設定を渡すためのサポートが追加されました (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.jsonAPI を追加 (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_redirectrequest.meta キーを追加 (#233)再試行を回避するための
dont_retryrequest.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.ScrapedItemclass を非推奨削除。代わりに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の最初のリリース。