BackEnd

Pythonで書かれたスクレイピングのコードをRubyで書いてみる

投稿日:2017年9月27日 更新日:


はじめに

以前、技術評論社さんのデータサイエンティスト養成読本という本を読みました。
いろいろな技術の紹介があり、非常に参考になりました。

その中でスクレイピングに関するサンプルコードもありました。
今回はPythonで書かれていたスクレイピングのコードをRubyで書き直した記事になります。

なお、Pythonで書かれたサンプルの方は実際に書籍をご覧になってください。

仕様

技術評論社さんのサイトに行き、直近の記事タイトルとそのリンクを取得してJSONで吐き出します。

ソースコード

実際に書いたソースコードはこちらになります。
その後、各項目について記載したいと思います。

ファイル名を指定して ruby コマンドで実行できます。

使用したモジュール、Gem

対象ページを取得

open-uriのopenメソッドを使用し、対象URLを開いて取得します。
その際、オプションとしてUser Agentが渡せるので、クローラーだと分かるような名前をつけてあげます。
取得したページはNokogiriでHTMLとして解析して返却します。

XPATHから目的のものを抜き出す

Google Chromeなどを使用すれば、対象のHTMLタグのXPATHを取得することができるので、そちらから目的のものを取得します。
XPATHの説明は、下記の方の記事が分かりやすいかと思います。

同じ階層の、例えば <div> などは配列で返ってくるので、ループして必要なだけ抽出します。
記事タイトル、リンク先それぞれ取得の方法が違うので、メソッドを用意してあげます。

次のページのリンクを取得する

はじめに定数として、 PAGE_NUM = 2 と与えています。
技術評論社さんの記事ページはページングされており、過去の記事を見るためには次のページへ行く必要があります。

このとき、次のページボタンのXPATHを指定し、そのDOMのURLを取得すれば、同様の処理を繰り返すことで次のページの記事も取得できます。
今回のサンプルでは、何ページ目まで取得するか、という意味で PAGE_NUM = 2 が与えられています。
もしそれ以上過去の記事がなければ、リンクが取得できないはずなので、その場合は break します。

さいごに

スクレイピングの勉強がてら書き換えてみました。
Railsで素早くWebページを作成することは違うので、Ruby自体の勉強にオススメです。

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

uvの本番環境用dockerのマルチステージビルド

1 はじめに2 サンプルプロジェクトの作成3 シングルステージビルド4 uv流のマルチステージビルド4.1 便利オプションの紹介(おまけ)5 さいごに6 おすすめ書籍 はじめに uvで本番環境のdoc ...

Vue.js入門その4〜TODOアプリにサーバーサイドを追加してみる〜

1 はじめに2 準備2.1 今回作成したいもの2.2 環境構築3 サーバーサイド3.1 DB3.2 メモ:rails generateで余分なファイルを生成しない3.3 作成したファイル4 ビューの作 ...

laravel logo

LaravelでHTTP通信

1 はじめに2 インストール3 基本的な使い方3.1 GETでリクエストを投げる3.2 リクエストヘッダーを指定3.3 クエリパラメータを指定3.4 timeout時間を指定3.5 POSTでリクエス ...

php logo

PHPでGmail APIを利用してメールデータを取得してみる その2

1 はじめに2 メールの内容取得3 MessagePartオブジェクト3.1 件名3.2 本文4 multipartの場合4.1 本文の取得5 全文6 さいごに7 おすすめ書籍 はじめに 前回は、Gm ...

RubyのHanamiチュートリアルをやってみた

1 はじめに2 紹介2.1 Hanamiとは?2.2 Hanamiを選ぶ理由2.2.1 軽量2.2.2 アーキテクチャとして2.2.3 スレッドセーフ3 チュートリアルのための準備4 実践4.1 はじ ...

フォロー

blog-page_side_responsive

2017年9月
 12
3456789
10111213141516
17181920212223
24252627282930

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。