Разобрать html-страницу с помощью mechanize, чтобы получить соответствующий массив - PullRequest
0 голосов
/ 10 марта 2012

На странице, полученной mechanize (agent.get), есть следующий HTML-код:

<div class="b-resumehistorylist-views">

<!-- first date start-->

<div class="b-resumehistory-date">date1</div>

<div class="b-resumehistory-company">
<div class="b-resumehistory-time">time1</div>
<a href="company_lynk1">company1</a></div>


<!-- second date start -->

<div class="b-resumehistory-date">date2</div>

<div class="b-resumehistory-company">
<div class="b-resumehistory-time">time2</div>
<a href="company_lynk2">company2</a>
</div>

<div class="b-resumehistory-company">
<div class="b-resumehistory-time">time3</div>
<a href="company_lynk3">company3</a></div>

<div class="b-resumehistory-company">
<div class="b-resumehistory-time">time4</div>
<a href="company_lynk4">company4</a></div>

<div class="b-resumehistory-company">
<div class="b-resumehistory-time">time5</div>
<a href="company_lynk5">company5</a></div>

<div class="b-resumehistory-company">
<div class="b-resumehistory-time">time6</div>
<a href="company_lynk6">company6</a></div>

<div class="b-resumehistory-company">
<div class="b-resumehistory-time">time7</div>
<a href="company_lynk7">company7</a></div>

...

</div>

Мне нужно искать внутри div с class = "b-resumehistorylist-views" каждую дату. Затем найдите все div между двумя датами div и свяжите каждый элемент с этой конкретной датой.

Проблема в том, что каждый элемент (div class = b-resumehistorylist-views) не находится внутри div = b-resumehistorylist-views.

На последнем этапе мне нужно получить следующий массив: array = [ [date1, time1, company1, companylink1], [date2, time2, company2, companylink2], [date2, time3, company3, companylink3],[date2, time4, company4, companylink4] ]

Я знаю, что должен использовать метод поиска с параметром text (), но не могу найти решение. Мой код прямо сейчас может анализировать всю информацию о компаниях между div class = b-resumehistory-company, но мне нужно найти правильную дату.

1 Ответ

1 голос
/ 10 марта 2012

Это было бы так же, как и раньше, только некоторые атрибуты класса были изменены:

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