Как позволить Ruby Mechanize получить страницу, которая находится в строке

Как правило, 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 = ...

person Just a learner    schedule 03.03.2012    source источник


Ответы (1)


Mechanize использует Nokogiri для анализа HTML. Если вы получаете доступ к HTML без необходимости использования протокола интернет-передачи, вам не нужен Mechanize. Все, что вам нужно сделать, это проанализировать входной HTML, верно?

Следующее позволит вам сделать это:

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

Если у вас установлен камень Mechanize, у вас уже есть Nokogiri.

В противном случае вы все равно можете создать новую страницу Mechanize, используя:

require 'Mechanize'
html = 'html here'
a = Mechanize.new
page2 = Mechanize::Page.new(nil,{'content-type'=>'text/html'},html,nil,a)
person Kassym Dorsel    schedule 03.03.2012