通常 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 = ...

最佳答案

Mechanize 使用 Nokogiri 来解析 HTML。如果您在不需要 Internet 传输协议(protocol)的情况下访问 HTML,则不需要 Mechanize。您要做的就是解析输入的 HTML,对吗?

以下将让您执行此操作:

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

如果您安装了 Mechanize gem,您将已经拥有 Nokogiri。

否则你仍然可以使用以下方法创建一个新的机械化页面:
require 'Mechanize'
html = 'html here'
a = Mechanize.new
page2 = Mechanize::Page.new(nil,{'content-type'=>'text/html'},html,nil,a)

关于ruby - 如何让 Ruby Mechanize 获得一个存在于字符串中的页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9549354/

10-13 01:26