2014-11-06 3 views
1

Есть ли простой способ проанализировать HTML-страницу, чтобы просто получить текст, который является видимым для пользователя? Я хочу избавиться от всех тегов, ссылок, JavaScript и вернуть текстовый контент, который был на странице.Очистить весь видимый текст с веб-страницы

Я просто хочу сохранить информацию и вернуться к ней позже, но использовать ее в поиске.

Пытались Nokogiri и Капибара/Полтергейст

doc.css('body').text 

Но это дает мне все виды JavaScript и мусор, который я предпочел бы не видеть.

Есть ли способ разбить биты текста и выгрузить их в строку, игнорируя все «код»?

+0

Вы хотите, чтобы текст после CSS и JavaScript имели возможность скрыть/переместить текст или вы хотите, чтобы текст отображался, если JavaScript и CSS не были включены? –

+0

Только смотреть, чтобы взять видимый текст, прежде чем js в порядке. Нашел метод, используя capybara, который делает работу элегантно и просто. Было бы очень полезно сделать это с помощью Nokogiri/Mechanize. – Carpela

ответ

1

Действительно простой, на самом деле.

Использование Capybara (и PhantomJS в моем случае, хотя я не думаю, что это имеет значение)

@session.visit url 
    # Grab the text from the page 
    @session.text 
    # Grab the page title 
    @session.title 

отлично делает свою работу ...

2

Если вы хотите получить текст, который получает настоящий пользователь, то имитируйте реального пользователя. Один из способов заключается в использовании Watir-WebDriver, используя что-то вроде PhantomJS, например:

require 'watir-webdriver' 

browser = Watir::Browser.new :phantomjs 
browser.goto 'https://google.com' 
puts browser.body.text 

Конечно, для этой работы (PhantomJS быть конкретными), вам необходимо скачать файл для соответствующих JS (PhantomJS Downloads) и поместите его в свою ПУТЬ.

Причина, по которой вы все это получаете, заключается в том, что Nokogiri не действует как настоящий пользователь, он просто разбирает и анализирует HTML-документ, который может содержать кучу встроенного HTML и так далее.

0

Я использовал Sanitize с хорошими результатами.

Sanitize дает вам метод clean, который позволяет указать configuration.

Вы можете выбрать конфигурацию, которая наилучшим образом подходит для вашего случая.

Существует demo и comparison, доступных для проверки.

Смежные вопросы