Как написать метод для CSV не просто строка?Ruby CSV Gem - PullRequest
0 голосов
/ 11 сентября 2018

Мне нужно поместить текстовое содержимое из 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

1 Ответ

0 голосов
/ 11 сентября 2018

%w[Searchresults] создает массив, содержащий слово Searchresults.Вы, вероятно, хотите что-то вроде этого:

# assign the array returned from `map` to the `search_results` variable
search_results = browser.divs(class: 'results_row').map(&:text)

# output the `search_results`. Note that the return value of `puts` is `nil`
# therefore something like `Searchresults = puts browser...` doesn't work
puts search_results

# append `search_results` to your csv 
csv << search_results
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...