Ruby の Mechanize の wiki のよてい

Mechanize::Page::Meta


「refresh する meta タグ」を保存しているクラスです。次のようなものです。
<meta http-equiv="refresh" content="5; url=hoge.htm"> 

このタイプ以外の meta は Meta クラスでは無視され、Mechanize が特別に解釈することもありません。
Mechanize#follow_meta_refresh がユーザーによって true に設定されていたときに、ページ取得直後に #uri へ自動的に移動するためのデータクラスとしてのみ使用されます。ページの Meta オブジェクトを変更しても移動は行われません。
Mechanize::Page::Link を継承しているので、Mechanize#follow_meta_refresh= で設定を変更しなくても Mechanize#get に渡すなどして「手動リフレッシュ」させ、URL 先の Page オブジェクトを取得することはできます。


Mechanize::Page::Meta.parse(content, uri)

meta の「リフレッシュタグ」をパースし、秒数とリフレッシュ先の絶対 URL を配列にして返します。ユーザーが使用することはありません。
引数 content で渡された

<meta http-equiv="refresh" content="5; url=hoge.htm"> 
という HTML の content 属性値 "5; url=hoge.htm" を "5" と "hoge.htm" に分解し、hoge.htm 部分は引数 uri を利用して絶対 URL に変換します。
分解できなかった場合は [nil, uri.to_s] を返します。
Mechanize::Page#meta 内で Meta オブジェクトを作成する際に使用されます。

Mechanize::Page::Meta.new(node, mech, page)

Mechanize::Page::Meta オブジェクトを生成します。ユーザーが使用することはありません。

node

この Meta オブジェクトを作成したときに使用した HTML ノードを Nokogiri::HTML::Element? 等で返します。
ただし、Mechanize::Page#meta で返る Meta オブジェクトは Mechanize::Page::Meta.parse の結果で拡張されており、待機秒数が文字列で node['delay'] に、リフレッシュ先の絶対 URL 文字列が node['href'] にそれぞれ格納されています。

href

リフレッシュ先の絶対 URL を文字列で返します。
Mechanize::Page#meta で返る Meta オブジェクトは URL が絶対 URL になっています。meta に相対 URL で記述されていた場合は、meta が所属する #page の URL が基本になって変換されています。
URI オブジェクトで欲しい場合は #uri メソッドを使用します。

attributes

alias #node

page

この Meta オブジェクトを作成したときに使用した Mechanize::Page オブジェクトを返します。
この Meta オブジェクトが表す meta 要素を含むページオブジェクトが返ります。

referer

alias #page

uri

リフレッシュ先の絶対 URL を Ruby 標準の URI オブジェクトで返します。
#href の値を URI.escape して URI.parse したものが返ります。
文字列で欲しい場合は #href を使用します。

click

#href の返す URL にアクセスし、サーバからの結果を履歴に登録して返します。
内部的には Mechanize::Page#click なので、リファラとして #page の URL が必ず送られます(通常の Web ブラウザの挙動とは違います)。meta refresh はリファラが一切送られないことを前提に設置されていることが多いので注意が必要です。リファラを送りたくない場合はこのオブジェクト自体か #href の返り値などを Mechanize#get してください。
×

この広告は60日間更新がないwikiに表示されております。

管理人のみ編集できます