STERFIELD

2017/09/13

BeautifulSoup以外でのスクレイピング

BeautifulSoup以外でのスクレイピング

はじめに

PythonにはBeautifulSoupというスクレイピングするのに持って来いなModuleが用意されています。

実際使ってみて「もうちょっと使いやすければ、、、」と思った点。
1. 文字コードがUnicodeだったりUTF-8だったり場面によってコロコロ変わる
2. DBとの連携時はやはりフレームワークが必要だが、そんな知識は・・・
どちらも知識不足、、、と言われると致し方ない。

そんなとき「Ruby(実際はmodule)にも似た機能がある」という情報を見つけ早速導入。

その名は・・・「Rubyful Soup」。。

いざインストール

残念ながらRailsのプラグイン管理gemではインストール出来ず。
手動にてダウンロードして読み込みます。

https://www.crummy.com/software/RubyfulSoup/

何やら手動ダウンロードするリンクがあるのでクリック。
反応しない。

良く見ると上のNoteに「もうメンテしませんよ。hpricotというものをオススメします」と。
作者頓挫したご様子。

気を取り直してHpricot導入!

ググったら一番上に安心のGithubへのリンク。
https://github.com/hpricot/hpricot

Installationを読むとgemにも当然対応。
早速いつもの流れでRailsのプロジェクトを作成。ここは割愛。

Gemfileに’hpricot’を追記して

し、実行するプログラムに
require ‘hpricot’
と記述すれば使えます。

いざ実装!

TopicというModelを作っておきます。

次にスクレイピングプログラム。
特にWebでイベントを作るわけでもないので今回はバッチで。

lib/tasks/scrape.rb

文字コードもあまり意識せずにDBへの保存も
Topicというテーブルに対してcontentを入れてsaveするだけ。
相変わらず簡単(すぎる)Rails可愛いですね。

補足

速度面ではやはりPythonのBeautifulSoupには負けっるようです。
Rails自体が要するベーススペックがやや高めなので致し方ないとはいえPythonを使い倒せるよう勉強していきます。

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい