Ваш XPath правильный, и вы, кажется, ответили на первую часть своего вопроса (почти):
doc.xpath('//table/tbody[@id="threadbits_forum_251"]/tr')
"приведенный выше код даст мне любую таблицу tr таблицы, где угодно , у которой есть дочерний элемент tbody с атрибутом id, равным threadbits_forum_251"
//
означает, что следующий элемент может появиться в любом месте документа.
/tr
в конце означает, получить узел tr
соответствующего элемента.
Вам не нужно извлекать каждый атрибут один за другим. Просто получите весь узел, содержащий все четыре атрибута в Нокогири, и получите атрибуты, используя:
theNode['href']
theNode['src']
Где theNode
- ваш Nokogiri Узел объект.
Edit:
Извините, я не использовал эти библиотеки, но я думаю, что оценка и анализ XPath выполняется Mechanize. Вот как вы можете получить весь элемент и его атрибуты за один раз.
doc.xpath("td[3]/div[1]/a").each do |anchor|
puts anchor['href']
puts anchor['src']
...
end