Как разобрать эту HTML-страницу, используя mechanize (ruby gem)?* небольшая поправка * - PullRequest
1 голос
/ 09 марта 2012

На странице у меня есть следующий источник HTML:

<div class="date">date1</div>

<div class="company"><div class="time">time1</div>
<a href="company_link1">company_name1</a></div>

<div class="company"><div class="time">time2</div>
<a href="company_link2">company_name2</a></div>

<div class="date">date2</div>
<div class="company"><div class="time">time3</div>
<a href="company_link3">company_name3</a></div>

... etc. 

Мне нужно на заключительном этапе получить следующий массив:

array = [[date, time1, company_name1, company_link1], [date, time2, company_name2, company_link2], [date2, time3, company_name3, company_link3], ...]

Проблема в том, что у div "class = company" нет даты, поэтому мне нужно проанализировать правильные даты и добавить каждую дату ко всем элементам (время, название компании, ссылка на компанию).

Большое спасибо за вашу помощь, я новичок в Ruby.

PS: мне нужно использовать механизацию, потому что мою страницу можно получить только через вход в систему.

1 Ответ

3 голосов
/ 09 марта 2012

Хм, ваш date2 div не закрыт должным образом, но может быть что-то вроде:

doc.css('.company').map{|x| [x.at('./preceding-sibling::div[@class="date"][1]').text, x.at('.time').text, x.at('a').text, x.at('a')[:href]]}
...