2011-09-26 32 views
1

我试图报废一个网页。我使用Nokogiri /机械化。所以如果我让机械化获取文件而不是页面对象

page = agent.get(url) 
page.class 
=> Mechanize::File 

,有时我得到一个页面对象有时候是一个文件对象。但我需要的是,每当一个页面对象。我试图为plain/text添加一个pluggable_parser,但这对我不起作用。

有没有人有一个想法如何我可以修复它,或者我如何从文件对象中找出内容类型或知道如何将文件转换为页面对象?

感谢迈克尔

+0

使用相同的网址或不同的网址? – Serabe

+0

具有相同的网址,我认为它是一个肮脏的HTML代码或类似的东西。我没有与其他方获得页面对象的问题。我尝试了一个工作,并下载文件,以使用uri从文件中创建一个页面对象。 – mibo

回答

0

最有可能要请求页面不可用,服务器返回一个纯文本错误页面。

请参阅Mechanize::File上的文档。

内容类型为page.response['content-type']

绝对有可能改变响应的内容类型,然后从数据创建一个Mechanize::Page,而不必再次下载它 - 但我认为这不会给你任何有用的东西。

检查响应代码,以及它在page.code

+0

=> {“server”=>“nginx”,“date”=>“Thu,09 Jun 2016 16:27:07 GMT”,“content-type”=>“text/html; charset = UTF-8” ,“transfer-encoding”=>“chunked”,“connection”=>“keep-alive”,“expires”=>“Wed,08 Jun 2016 16:27:07 GMT”,“x-powered-by”= >“PleskLin”} 但仍然是Mechanize :: File。不知道为什么。 –

相关问题