プログラミング

Rubyのmechanizeとnokogiriでスクレイピング

私のブログ “https://yuis-programming.com/” で、記事を検索して最初に出てきた記事のタイトルを取得する、というテストコードになります。
Rubyのmechanizeとnokogiriのスクレイピングの使用例として、Rubyのmechanizeでブログをキーワード検索して最初の投稿を取得する方法についてメモです。
Rubyのライブラリmechanizeとnokogiriを使用します。

やってること:
1. 検索窓をクリックで表示
1. フォームに検索したい値を定義
1. フォームを送信
1. 検索結果のHTMLをnokogiriでパースしてタイトルを取得

以下例のコードです。

require 'mechanize'
require 'logger'

agent = Mechanize.new
agent.log = Logger.new "mech.log"
agent.user_agent_alias = 'Mac Safari'

page = agent.get "https://yuis-programming.com/"

page.link_with(:xpath => '//*[@id="menu-navigator"]/li[4]/a').click
page.form.field_with(xpath: '//*[@id="s"]').value = 'magic'
# page.form.field_with(xpath: '//*[@id="s"]').value = 'ruby'
search_results = agent.submit page.form_with(xpath: '//*[@id="searchform"]')

require 'nokogiri'
require 'open-uri'

Encoding.default_external = 'UTF-8'

doc = Nokogiri::HTML(search_results.body)
puts firstpost = doc.xpath('//div/div/header/h2/a')[0].text

コメントを残す

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