Справка Ruby Mechanize для очистки экрана - PullRequest
0 голосов
/ 15 февраля 2011

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

Это мой код механизации. Я пытаюсь выбрать строку, в которой есть дата столбца и ее столбцы:

agent.page.search ( "// тд") карта (&: текст). .Map (&: полоса)

Output:
"11-02-2011", "1", "1", "1", "1", "0", "0,00 DKK", "0,00", "0,00 DKK", 
"12-02-2011", "5", "5", "1", "4", "0", "0,00 DKK", "0,00", "0,00 DKK", 
"14-02-2011", "1", "3", "1", "1", "0", "0,00 DKK", ",00", "0,00 DKK",
"7", "9", "3", "6", "0", "0,00 DKK", "0,00", "0,00 DKK

"

Я хочу очистить только третью строку, которая является сегодняшней датой.

1 Ответ

1 голос
/ 15 февраля 2011

Вместо того, чтобы перебирать теги <td> с помощью '//td', найдите теги <tr>, возьмите только третий, а затем обведите '//td'.

Механизация использует Nokogiri для внутреннего использования, поэтому вот как это сделать в Nokogiri-ese:

html = <<EOT
<table>
<tr><td>11-02-2011</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td><td>0,00 DKK</td><td>0,00</td><td>0,00 DKK</td></tr>
<tr><td>12-02-2011</td><td>5</td><td>5</td><td>1</td><td>4</td><td>0</td><td>0,00 DKK</td><td>0,00</td><td>0,00 DKK</td></tr>
<tr><td>14-02-2011</td><td>1</td><td>3</td><td>1</td><td>1</td><td>0</td><td>0,00 DKK</td><td>,00</td><td>0,00 DKK</td></tr>
</table>
EOT

require 'nokogiri'
require 'pp'

doc = Nokogiri::HTML(html)

pp doc.search('//tr')[2].search('td').map{ |n| n.text }

>> ["14-02-2011", "1", "3", "1", "1", "0", "0,00 DKK", ",00", "0,00 DKK"]

Используйте .search('//tr')[2].search('td').map{ |n| n.text }, добавленный к agent.page Mechanize, например:

agent.page.search('//tr')[2].search('td').map{ |n| n.text }

Прошло много времени с тех пор, как я играл с Mechanize, поэтому это может быть также agent.page.parser....


РЕДАКТИРОВАТЬ:

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

Важно поместить эту информацию в исходный вопрос.Чем точнее ваш вопрос, тем точнее наши ответы.

...