Начиная с Механизации 2.0, аргументы pre_connect_hooks()
и post_connect_hooks()
были изменены.
См. Документацию Механизация :
pre_connect_hooks ()
Список хуков, которые нужно вызвать перед получением ответа.Хуки вызываются с агентом, URI, ответом и телом ответа.
post_connect_hooks ()
Список хуков дляпозвонить после получения ответа.Хуки вызываются с агентом, URI, ответом и телом ответа.
Теперь вы не можете изменить внутреннее значение тела ответа, поскольку аргумент не является массивом.Итак, следующий лучший способ - заменить внутренний синтаксический анализатор своим:
class MyParser
def self.parse(thing, url = nil, encoding = nil, options = Nokogiri::XML::ParseOptions::DEFAULT_HTML, &block)
# insert your conversion code here. For example:
# thing = NKF.nkf("-wm0X", thing).sub(/Shift_JIS/,"utf-8") # you need to rewrite content charset if it exists.
Nokogiri::HTML::Document.parse(thing, url, encoding, options, &block)
end
end
agent = Mechanize.new
agent.html_parser = MyParser
page = agent.get('http://somewhere.com/')
...