Mechanize Gem を使用した Web サイトのスクレイピング

ウェブスクレイピング (Web ハーベスティングまたは Web データ抽出) は、Web サイトから情報を抽出するコンピューター ソフトウェア技術です。 Mechanize ライブラリは、Web サイトとの対話を自動化するために使用されます。 Mechanize gem は、Cookie を自動的に保存して送信し、リダイレクトに従い、リンクをたどってフォームを送信できます。

フォームフィールドにデータを入力して送信できます。また、訪問したサイトを履歴として追跡します。 Nokogiri を利用してページを解析して関連するフォームとボタンを見つけ、Web フォームを操作するための簡素化されたインターフェイスを提供します。

依存関係

  • ルビー 1.8.7、1.9.2、または 1.9.3

  • 鋸切

Mechanize を始めるには:

ページを取得しましょう!

まず第一のこと。 mechanize が必須であることと、新しい mechanize オブジェクトをインスタンス化していることを確認してください。

「rubygems」が必要です
「機械化」が必要

エージェント = Mechanize.new
次に、作成したエージェントを使用してページを取得します。 Mechanize エージェントを使用して Google を取得しましょう。
ページ = エージェント.get ('http://google.com/')

リンクの検索

Mechanize は、ページの取得、投稿、またはフォームの送信を行うたびに、ページ オブジェクトを返します。ページがフェッチされると、エージェントはページを解析し、ページ オブジェクトにリンクのリストを配置します。

Google のホームページを取得したので、すべてのリンクをリストしてみましょう。

page.links.each は |link| を行います。
  link.text を挿入します
終わり

リンクをリストすることもできますが、Mechanize はクリックするリンクを見つけるのに役立つショートカットをいくつか提供します。テキストが「ニュース」であるリンクをクリックしたいとします。通常、次のようにする必要があります。

ページ = エージェント.ページ.リンク.find { |l| l.text == 'ニュース' }.click (または)
page = Agent.page.link_with(:text => 'ニュース').click (または)
Agent.page.links_with(:text => 'ニュース')[1].click (または)
page.link_with(:href => '/something')。

フォームへの記入

Google の例を続けてみましょう。これまでに作成したコードは次のとおりです。

「rubygems」が必要です
「機械化」が必要

エージェント = Mechanize.new
ページ = エージェント.get('http://google.com/')

ページをきれいに印刷すると、「f」という名前の 1 つのフォームがあり、いくつかのボタンといくつかのフィールドがあることがわかります。

ページ

フォームの名前がわかったので、それをページから取得してみましょう。

google_form = page.form('f')

コードをまとめて見てみましょう。

「rubygems」が必要です
「機械化」が必要

エージェント = Mechanize.new
ページ = エージェント.get('http://google.com/')
google_form = page.form('f')
google_form.q = 'ルビーの機械化'
ページ = エージェント.submit(google_form)
ページ

データのスクレイピング 
Mechanize は Nokogiri を使用して HTML を解析します。これはあなたにとって何を意味しますか?機械化ページをノコギリ オブジェクトのように扱うことができます。 Mechanize を使用してスクレイピングする必要があるページに移動した後、nokogiri メソッドを使用してそのページをスクレイピングします。
Agent.get('http://someurl.com/').search("p.posted")

Mechanize::Page#search に指定される式は、CSS 式または XPath 式の場合があります。

Agent.get('http://someurl.com/').search(".//p[@class='posted']")

Mechanize ライブラリは、Web サイトとの対話を自動化するために使用されます。 Mechanize gem は、Cookie を自動的に保存して送信し、リダイレクトに従い、リンクをたどってフォームを送信できます。フォームフィールドにデータを入力して送信できます。また、訪問したサイトを履歴として追跡します。 Nokogiri を利用して、関連するフォームとボタンのページを解析し、Web フォームを操作するための簡素化されたインターフェイスを提供します。

レールカーマ Ruby on Rails フレームワークの初期段階から取り組んでおり、 250RoR プロジェクト。最新の技術とツールに精通した 100 人以上の RoR 開発者チームを擁する RailsCarma は、あらゆる開発ニーズに応えるのに最適です。

喜んでご質問にお答えいたします。弊社の お問い合わせ ページに接続してください。

関連記事を読む :

ご連絡ください。

最新のアップデートを購読する

関連記事

コメントを残す

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

jaJapanese