通常,Mechanize会从URL获取一个网页,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 = ...
答案 0 :(得分:20)
Mechanize使用Nokogiri来解析HTML。如果您在不需要Internet传输协议的情况下访问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)