Мне нужно поместить текстовое содержимое из HTML-элемента в CSV-файл.С гемом ruby csv кажется, что основной метод записи для обернутых строк и операций ввода-вывода преобразует только строку, даже если указан объект.
Например:
Searchresults = puts browser.divs(class: 'results_row').map(&:text)
csv << %w(Searchresults)
возвращает только "Результаты поиска "в CSV-файле.
Кажется, должен быть способ указать текст из элемента div, который нужно поместить, а не просто литеральную строку.
Редактировать:
Хорошо, arieljuod и spickermannбыли правы.Теперь я получаю текстовое содержимое из вывода элемента div в csv, но не все, как при выводе на консоль.Элемент div "results_row" имеет два элемента с текстовым содержимым.У него также есть дочерний элемент div "results_subrow" с абзацем текстового содержимого, которое не записывается в csv.HTML:
<div class="bodytag" style="padding-bottom:30px; overflow:visible">
<h2>Search Results for "serialnum3"</h2>
<div id="results_banner">
Products
<span>Showing 1 to 2 of 2 results</span>
</div>
<div class="pg_dir"></div>
<div class="results_row">
<a href="/products/fuji/" title="Fuji, Inc.">FUJI</a>
<a href="/products/fuji/50mm lens/" title="Fuji, Inc.">50mm lens</a>
<div class="results_subrow">
<p>more product info</p>
</div>
</div>
<div class="results_row">
<a href="/products/fuji/" title="Fuji, Inc. 2">FUJI</a>
<a href="/products/fuji/50mm lens/" title="Fuji, Inc.">50mm lens</a>
<div class="results_subrow">
<p>more product info 2</p>
</div>
</div>
<div class="pg_dir"></div>
Мой код:
search_results = browser.divs(class: 'results_row').map(&:text)
csv << search_results
Я думаю, что включение дочернего элемента div "results_subrow" в локатор найдет то, что мне не хватает,Нравится:
search_results = browser.divs(class: 'results_row', 'results_subrow').map(&:text)
csv << search_results