flavorじっくりコトコト煮込んだみかん2。知らないことを知りたい。この広告は、90日以上更新していないブログに表示しています。scrapingPythonの有名なWebスクレイピングフレームワークのScrapyがバージョン1.0になりました。*10.24からの主要な変更点は下記のとおりです。SpiderでItemの代わりにdictを返せるようになったSpiderごとにsettingsを設定できるようになったTwistedのloggingの代わりにPythonのloggingを使うようになったCrawlerのコアAPIがリファクタリングされたいくつかのモジュール配置場所が変更された他にも数多くの変更点がリリースノートに記載されています。大きな機能の追加よりも、APIの整理と安定性の向上がメインのようです。これまではバージョンを重ねるごとに便利になっていくものの、あまりAPIが安定していない印象でしたが、APIを安定させた区切りのリリースと言えるでしょう。1.0というメジャーバージョンに到達したことで、安心して使えるようになったと思います。Itemの代わりにdictが使えるようになったのはありがたいです。Itemの存在意義は正直謎でしたので。個人的に気になっていた、単一の要素を取得したい場合でもlistを返すextract()しかなくて使いにくい問題も、extract_first()メソッドが追加されたことで解決したので嬉しいです。3のサポートが含まれています。2015のテーマとして採択されており、この夏の成果が楽しみです。1.0を使ってクローラーを書いてみましょう。例1:1ファイルのシンプルなクローラーScrapyは大規模なクローリングを得意とするフレームワークですが、1ファイルから構成されるシンプルなクローラーも書けます。ScrapyのWebサイトのトップに表示されている、Scrapinghubのブログをクロールするクローラーを動かしてみます。ちなみにScrapinghubはScrapyの開発者が立ちあげた会社です。表示されているコードをそのままターミナルに貼り付けて実行してもよいのですが、ちょっと手を加えて解説も加えておきます。--upgradeをつけることでインストール済みの場合はアップグレードします。service_identityもインストールしておくservice_identityはMITMを防ぐモジュールであり、これがインストールされていないと警告が出ます。Spiderを作成するmyspider.pyという名前で以下の内容のファイルを作成します。日本語のコメントを付けたので、1行目にエンコーディングを指定しています。ファイルはUTF-8で保存してください。トップページをパースするメソッド。含むアーカイブページへのリンクを抽出してクロールする。それらのページはparse_titles()メソッドでパースする。クローラーを実行する以下のコマンドで実行できます。http://blog.scrapinghub.com)...実行するとアーカイブページを30ページほどクロールして、タイトルを取得できます。いう引数をつけると、取得したタイトルがtitles.jlという名前のファイルにJSONlines形式で書き込まれます。Newsを対象として、もう少し複雑なクローラーを書いてみます。以前の記事に書いたクローラーは、Webサイト側の変更によって既に2つとも動かなくなっています。Webスクレイピングの無常さを感じますが、めげずに書き直します。当時のバージョンは0.20.2でしたが、1.0の機能を使うとよりシンプルに書けます。スクレイピングした後にデータベースに保存するなどの処理を行ったり、設定を共有した複数のSpiderを動かしたりするなど、1ファイルでは収まらないクローラーを作成するときには、プロジェクトを作るのがScrapyの流儀です。以下のコマンドで、helloscrapyという名前のプロジェクトを作成します。helloscrapy以下のファイルが生成されます。scrapy.cfgプロジェクトのディレクトリにcdしておきます。helloscrapy/helloscrapy以降では、このディレクトリ(settings.pyが存在するディレクトリ)を基準とします。settings.pyに以下の設定を追加しておきます。Webページのダウンロード間隔として3秒空け、Webサイトのrobots.txtに従うようになります。Sitemapを持つWebサイトをクロールするにはSitemapSpiderが便利です。Newsを取り上げます。Sitemapが提供されていました。spiders/cnet.pyを以下の内容で作成します。www.cnet.comを実行するとSpiderの雛形が生成されるので、これを変更しても構いません。無関係なサイトマップが多くあるので、今回はサイトマップのURLを直接指定する。}以下のコマンドでクローラーを実行します。するとitems-cnet.jlにスクレイピング結果が出力されていきます。Sitemapを持たないサイトのクローリングにはCrawlSpiderが便利です。例として、BBCを取り上げます。Sitemapを使わずにクロールします。spiders/bbc.pyを以下の内容で作成します。www.bbc.comを実行するとCrawlSpiderを使ったSpiderの雛形が生成されるので、これを変更しても構いません。}以下のコマンドでクローラーを実行します。するとitems-bbc.jlにスクレイピング結果が出力されていきます。パースに失敗するページもありますが、無視してください。1.0になり、すっきりと書けるようになったことがわかるかと思います。使いやすくなり安定したScrapyでクローリングしていきましょう。13:00時点で公式サイトは0.24の表記のままですが、メーリングリストでアナウンスがありました。電子書籍書籍版の情報を更新しました。(1)はてなブログをはじめよう!mi_kattunさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。