Как мне вырезать фразы из строки в рубине? - PullRequest
0 голосов
/ 11 марта 2011

Я не был уверен в названии моих вопросов. У меня есть HTML-страница, которую я получил с помощью nokogiri. Теперь я хочу вырезать некоторые теги с этой страницы. Я попытался использовать метод удаления ruby ​​после преобразования html в строку - хотя он удаляет все введенные мной буквы. Лучший результат, который я получил, использовал .gsub('<stuff>', ''), хотя он все еще оставляет место. Можно ли на самом деле вырезать вещи из строки? конкретные фразы? Еще вопрос - можно ли убрать пробелы?

что я сделал до сих пор:

doc = Nokogiri::HTML(open("http://www.example.com/"))
tester = doc.css(".example").to_s.gsub('<div class="example">', '')

Ответы [ 2 ]

1 голос
/ 11 марта 2011

Ознакомьтесь с учебниками Нокогири.В частности, вы хотите прочитать «Изменение документа HTML / XML», Изменение текстового содержимого .

XML-средства доступа Nokogiri очень удобны, поскольку вам не нужно использовать XPath.Вы также можете использовать средства доступа CSS, и для людей, которые не работают в XML весь день, они могут сильно помочь.

В этом конкретном примере они используют метод at_css, который ищетПервое появление цели.У вас есть много альтернативных методов, которые являются синонимами: at, %, at_css и at_xpath обрабатывают случаи "найти первый".search, css, xpath, / аналогичным образом обрабатывают «найти все вхождения».

Например:

require 'nokogiri'

html = '<h1>Snap, Crackle and Pop</h1>'

doc = Nokogiri::HTML(html)
h1 = doc.at('h1') 
h1.content = h1.content[0, h1.content.length - 3] + '...'

puts doc.to_html

>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
>> <html><body><h1>Snap, Crackle and ...</h1></body></html>

Это создает новый документ HTML в Nokogiri,ищет первый H1 и обрезает последние три символа в его содержимом, заменяя их многоточием.

1 голос
/ 11 марта 2011

Я бы посоветовал попытаться сделать это на уровне дерева XML, а не редактировать строки.Я думаю, что apk nokogiri дает вам некоторые инструменты для этого.

Другой подход может заключаться в выборе нужных данных с помощью css или xpath, а не в удалении ненужных частей?

Также есть функция xpath для нормализации пространства в строках, есть пример в этом вопросе

Некоторая справка по nokogiri:

...