Я установил Ruby, и Механизировать. Мне кажется, что возможно в Nokogiri сделать то, что я хочу сделать, но я не знаю, как сделать это.
Что относительно этого table
? Это - просто часть HTML vBulletin сайта форума. Я пытался сохранить структуру HTML, но удалить некоторый текст и атрибуты тега. Я хочу получить некоторые детали на поток как: Заголовок, Автор, Дата, Время, Ответы и Представления.
Обратите внимание на то, что в документе HTML существует немного таблиц? Я после одной конкретной таблицы с tbody
, <tbody id="threadbits_forum_251">
. Имя всегда будет тем же (я надеюсь). Я могу использовать tbody
и name
в коде?
<table >
<tbody>
<tr> <!-- table header --> </tr>
</tbody>
<!-- show threads -->
<tbody id="threadbits_forum_251">
<tr>
<td></td>
<td></td>
<td>
<div>
<a href="showthread.php?t=230708" >Vb4 Gold Released</a>
</div>
<div>
<span><a>Paul M</a></span>
</div>
</td>
<td>
06 Jan 2010 <span class="time">23:35</span><br />
by <a href="member.php?find=lastposter&t=230708">shane943</a>
</div>
</td>
<td><a href="#">24</a></td>
<td>1,320</td>
</tr>
</tbody>
</table>
Полное построение регенерирует каждый объект. Инкрементное построение регенерирует измененные объекты и объекты, ссылающиеся на измененные объекты. (Реальность такова, что приращение немного сложнее, но это задуманная идея.) Развертывание запусков любого проекта, выбранного в свойствах целевого объекта, чтобы он мог выполнять инкрементную или полную сборку в зависимости от того, что определено в проекте, а также генерировать исполняемые файлы, определенные проектом.
Удачи,
Терри.
-121--4950849-Бесплатные звуковые эффекты - SFXsource.com
-121--2522087-#!/usr/bin/ruby1.8
require 'nokogiri'
require 'pp'
html = <<-EOS
(The HTML from the question goes here)
EOS
doc = Nokogiri::HTML(html)
rows = doc.xpath('//table/tbody[@id="threadbits_forum_251"]/tr')
details = rows.collect do |row|
detail = {}
[
[:title, 'td[3]/div[1]/a/text()'],
[:name, 'td[3]/div[2]/span/a/text()'],
[:date, 'td[4]/text()'],
[:time, 'td[4]/span/text()'],
[:number, 'td[5]/a/text()'],
[:views, 'td[6]/text()'],
].each do |name, xpath|
detail[name] = row.at_xpath(xpath).to_s.strip
end
detail
end
pp details
# => [{:time=>"23:35",
# => :title=>"Vb4 Gold Released",
# => :number=>"24",
# => :date=>"06 Jan 2010",
# => :views=>"1,320",
# => :name=>"Paul M"}]