超一流のプログラマーを目指してます!作成したポートフォリオを記録していく開発日誌です。この広告は、90日以上更新していないブログに表示しています。2019-06-16Scrapyでニュースを取得こんにちは。nakatatsuです。今回からフレームワークScrapyを使用して複数のニュースサイトから情報を取得するスクレイピングツールを作成します。Yahooニュースから情報を取得します。途中で変更があるかもしれません。準備Scrapyを使用するための準備を以下に示します。Scrapyを使うと、どんなWebサイトでも使える共通処理をフレームワークに任せて、ユーザーは個々のWebサイトごとに異なる処理だけを書けばよくなります。以下のような機能を持っています。scrapyScrapyはlxmlに依存しているので、libxml2とlibxsltのインストールも必要です。libxml2とlibxsltのインストールはこのブログの過去記事「サイトから画像を取得して保存」を参照してください。newsnewsというプロジェクトを作成しました。newsコマンドを実行する際は、基本的にこのディレクトリで実行します。3settings.pyに記載されている「DOWNLOAD_DELAY」の項目をコメントアウトし、ページのダウンロード間隔を平均3秒空けます。scrapy.cfgフォルダ構成はこのようになっております。ソースコードItemを作成します。ItemはSpiderが抜き出したデータを格納しておくためのオブジェクトです。scrapy.Field()Spiderを作成します。genspider」コマンドであらかじめ定義されているテンプレートからSpiderを作成できます。genspider」コマンドの第1引数にSpiderの名前、第2引数にドメイン名を指定して実行します。news.yahoo.co.jpspidersディレクトリ内にyahoo.pyというファイルが生成されます。これをベースに書き換えていきます。item実行の流れは以下のようになっています。ScrapyEngine:他のコンポーネントを制御する実行エンジンScheduler:Requestをキューに溜めるDownloader:Requestが指すURLのページを実際にダウンロードするSpider:ダウンロードしたResponseを受け取り、ページからItemや次にたどるリンクを表すRequestを抜き出すFeedExporter:Spiderが抜き出したItemをファイルなどに保存するItemPipeline:Spiderが抜き出したItemに関する処理を行うDownloaderMiddleware:Downloaderの処理を拡張するSpiderMiddleware:Spiderへの入力となるResponseやSpiderからの出力となるItemやRequestに対しての処理を拡張するSpiderを実行すると、最初にstart_urls属性に含まれるURLを指すRequestオブジェクトがScrapyのSchedulerに渡され、Webページの取得を待つキューに追加されます。キューに追加されたRequestオブジェクトは順にDownloaderに渡されます。DownloaderはRequestオブジェクトに指定されたURLのページを取得し、Responseオブジェクトを作成します。Downloaderの処理が完了すると、ScrapyEngineがSpiderのコールバック関数を呼び出します。デフォルトのコールバック関数はSpiderのparse()メソッドです。コールバック関数には引数としてResponseオブジェクトが渡されるので、ここからリンクやデータを抽出します。コールバック関数ではyield文で複数のオブジェクトを返せます。リンクを抽出して次のページをクロールしたい場合は、Requestオブジェクトをyieldします。データを抽出したい場合は、Itemオブジェクトをyieldします。Requestオブジェクトをyieldした場合、再びSchedulerのキューに追加されます。Itemオブジェクトをyieldした場合、FeedExporterに送られ、ファイルなどに保存されます。長いので省略してます。'【ワシントン=海谷道隆、ニューヨーク=村山誠】シャナハン米国防長官代行は14日、中東ホルムズ海峡近くのオマーン沖で起きた日本などのタンカー2隻への攻撃について、「情報の機密をさらに解除し、より多くの情報を共有したい」と述べた。イランの攻撃への関与を裏付ける情報を関係国などに提供し、米国の主張に対する国際社会の理解を広げる狙いだ。'「イラン関与」裏付け、米が機密開示を検討'}・・・トピックスページからタイトルと要約を取得することができました。03:30Scrapyでニュースを取得Tweet広告を非表示にする関連記事2019-06-09ドラマレビューサイト(Flask)5こんにちは。nakatatsuです。前回に引き続きドラマレビューサイ...2019-06-07ドラマレビューサイト(Flask)3こんにちは。nakatatsuです。前回に引き続きドラマレビューサイ...2019-06-07ドラマレビューサイト(Flask)2こんにちは。nakatatsuです。前回に引き続きドラマレビューサイ...2019-06-04FlaskでHTML化こんにちは。nakatatsuです。今回は「FlaskでHTML化」を行いま...2019-06-03サイトから画像を取得して保存こんにちは。nakatatsuです。»プロフィールid:nakatatsu_com超一流のプログラマーを目指してます!作成したポートフォリオを記録していく開発日誌です。教師なし機械学習(クラスタリング)教師なし機械学習(教師なし変換)教師あり機械学習(ニューラルネットワーク)教師あり機械学習(サポートベクタマシン)教師あり機械学習(勾配ブースティング回帰木)月別アーカイブはてなブログをはじめよう!nakatatsu_comさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。