Rubyでmechanizeでブログをキーワード検索して最初の投稿を取得する

    >

僕のブログ “https://yuis-programming.com/” で、記事を検索して最初に出てきた記事のタイトルを取得する、というテストコードになります。

やってること:
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

お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


関連するかもしれない記事

Rubyでstdin(標準入力)
Ruby windowsのソフトウェアを外部コマンドから開く・起動する
Ruby sinatra 使い方
Ruby hash キーが重複していた場合は2つの値を加算する
Ruby jrubyをインストールしてからGEMのパスが変わってしまった場合の対処
Rubyでhashや配列をeach_with_indexで最初と最後の処理だけ特別な処理をする
Rubyで配列の集合演算


Close Menu