Rubyのgemである「 Mechanize」を使ってスクレイピングするやり方です。
似てるgemでは「selenium-webdriver」がありますが、javascrptを使ってるサイトなどでは便利ですがブラウザを使わない分 Mechanizeのほうが早いです。
そんな Mechanizeの使い方です。
searchメソッド
cssと同じ要領で要素を取得できます。
get_attributeメソッド
hrefやsrcなどの属性の値を取り出すメソッドです
require "mechanize"
BASE_URL = "https://nashiblog.netlify.app/"
d = Mechanize.new
page = d.get(BASE_URL)
lists = page.search("a") #searchメソッドの使い方
lists.each do |list|
puts list.get_attribute(:href) #get_attributeメソッドの使い方
sleep 1
endinner_textメソッド
タグの中身の値を取り出します。
require "mechanize"
BASE_URL = "https://nashiblog.netlify.app/"
d = Mechanize.new
page = d.get(BASE_URL)
lists = page.search("a")
lists.each do |list|
puts list.inner_text #inner_textメソッドの使い方
sleep 1
endlink_withメソッド
require "mechanize"
BASE_URL = "https://nashiblog.netlify.app/"
d = Mechanize.new
page = d.get(BASE_URL)
text_link = page.link_with(text: "転移したいリンクテキスト").click #リンク先のテキストをターゲットにクリック
puts text_link.body #リンク先テキストを出力Mechanize リンクの取得
require "mechanize"
BASE_URL = "https://nashiblog.netlify.app/"
d = Mechanize.new
page = d.get(BASE_URL)
list = page.links
list.each do |o|
p o.text
endリンク先をクリックして転移する
require "mechanize"
BASE_URL = "https://www.amazon.co.jp/"
d = Mechanize.new
page = d.get(BASE_URL)
link_text = page.link_with(text: "Amazon プライム").click
#urlを取得して転移する場合 link_with(href: "url").click
puts link_text.bodyログインが必要なサイトにスクレイピング
d = Mechanize.new
page = d.get(BASE_URL)
login_id = page.form_with(id: "id")
login_id.field_with(name:"id").value = "id"
login_id.field_with(name:"password").value = "password"
login_path = d.submit(login_id)
puts login_path.bodyログイン後クッキーを取得する方法
d = Mechanize.new
page = d.get(BASE_URL)
login_id = page.form_with(id: "id")
login_id.field_with(name:"id").value = "id"
login_id.field_with(name:"password").value = "password"
login_path = d.submit(login_id)
#ここからクッキーを取得する部分
cookies = page.cookie_jar
info = cookies.map{|cookie| cookie}ユーザーエージェント文字列を既存のブラウザで偽装する
agent.user_agent_alias = "windows IE 7"
#アクセス時のログを設定したい場合
require "logger"
agent.log = Logger.new("log.txt")過去にアクセスしたページをURLで指定して呼び出す
agent = Mechanize.new
agent.get(url_1)
agent.get(url_2)
#visited_pageを使用する
agent.visited_page(url_1) #url_1に移動する