как получить простой, но форматированный html с помощью mechanize / nokogiri?

#ruby #nokogiri #mechanize

#ruby #nokogiri #механизировать

Вопрос:

 require 'rubygems'
require 'mechanize'

  rational = Mechanize.new { |agent|
        agent.user_agent_alias = 'Windows Mozilla'
  }
  results = rational.get(ARGV[0])
  puts results.content 
  

выдает мне html, но я хочу обычный текст. Лучше всего было бы, если бы его можно было отформатировать.

Ответ №1:

Этот код предоставит вам простой неформатированный текст всего документа:

 require 'mechanize'
require 'nokogiri'

rational = Mechanize.new { |agent|
    agent.user_agent_alias = 'Windows Mozilla'
}

document = Nokogiri::HTML(rational.get(ARGV[0]).content)

#This will give you very dirty result
#results = document.inner_text

#My suggestion is to extract text from some specific element
results = document.css("#content .my-element-with-some-contents").inner_text
  

Комментарии:

1. работает отлично. Спасибо. Я думал, что смогу использовать методы Nokogiri для объектов Mechanize….

2. Нет необходимости анализировать ответ, вы можете написать его как rational.get(link); rational.page.at('/html/body/h1').text