wafuの技術

技術習得の努力メモです。

RubyでWebページのスクレイピング(mechanize)

Rubyには、mechanizeというライブラリを使うと
スクレイピングが簡単にできそうです。

gem install mechanize

■基本 ホームページデータの取得

require 'mechanize'

sitedata = Mechanize.new
page = sitedata.get("https://www.example.com")
puts page.body

page.links
page.title
page.label
と設定することで便利に使うことができます。

■要素の探索
sitedata = Mechanize.new
page = sitedata.get("https://www.example.com")
elements = page.search('h1 a')
puts elements


ここから先は勉強中です。
わかりやすいサイトです。
【RubyでWebスクレイピング】Mechanizeを使ってスクレイピングをする方法【主要機能まとめ】 - shin>>media


■リンクを操作する方法

require 'mechanize'

sitedata = Mechanize.new
page = sitedata.get('https://www.example.com')
data = page.links  
data.each do |link|
	puts link.text
	puts link.href
end

■フォームの操作

require 'mechanize'
agent = Mechanize.new
page = agent.get('http://example.com/')
puts page.forms

id_form = page.form_with(id: 'id情報')
# page.form_with(class: 'class情報')

id_form.field_with(name: '要素情報').value = '入力値'
# id_form.field_with(id: 'id情報').value = '入力値'

result_form = agent.submit(id_form)

puts result_form.body

■ログインが必要なサイトへのアクセス

login_form = page.form_with(id: 'id情報')
login_form.field_with(name: 'id').value   = 'id'
login_form.field_with(name: 'pass').value = 'password'
after_login_page = agent.submit(login_form)

puts after_login_page.body

■クッキー情報の収集

login_form = page.form_with(id: 'id情報')
login_form.field_with(name: 'id').value   = 'id'
login_form.field_with(name: 'pass').value = 'password'
after_login_page = agent.submit(login_form)

cookies = agent.cookie_jar
hoge = cookies.map { |cookie| cookie }