14

通常、Mechanize は URL から Web ページを取得し、get メソッドの結果は Mechanize::Page オブジェクトであり、そこから多くの便利なメソッドを使用できます。

ページが文字列の中にある場合、どうすれば同じ Mechanize::Page オブジェクトを取得できますか?

require 'mechanize'

html = <<END_OF_STRING
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Page Title</title>
<style type="text/css">
</style>
</head>
<body>
<h1>This is a test</h1>
</body>
</html>
END_OF_STRING

agent = Mechanize.new

# How can I get the page result from the string html?
#page = ...
4

1 に答える 1

22

Mechanize は Nokogiri を使用して HTML を解析します。インターネット転送プロトコルを必要とせずに HTML にアクセスする場合、Mechanize は必要ありません。あなたがしようとしているのは、入力 HTML を解析することだけですよね?

これを行うには、次のようにします。

require 'Nokogiri'
html = 'html here'
page = Nokogiri::HTML html

Mechanize gem がインストールされている場合は、すでに Nokogiri が用意されています。

それ以外の場合でも、次を使用して新しい Mechanize ページを作成できます。

require 'Mechanize'
html = 'html here'
a = Mechanize.new
page2 = Mechanize::Page.new(nil,{'content-type'=>'text/html'},html,nil,a)
于 2012-03-03T20:33:00.097 に答える