使用Nokogiri::HTML和Ruby进行Web抓取-如何将输出放入数组?

使用Nokogiri::HTML和Ruby进行Web抓取-如何将输出放入数组?,ruby,nokogiri,scrape,Ruby,Nokogiri,Scrape,我刚开始使用nokogiri从一个网站上获取信息,但我不知道如何完成下面的工作。我有一些HTML代码需要整理: <div class="compatible_vehicles"> <div class="heading"> <h3>Compatible Vehicles</h3> </div><!-- .heading --> <ul> <li

我刚开始使用nokogiri从一个网站上获取信息,但我不知道如何完成下面的工作。我有一些HTML代码需要整理:

    <div class="compatible_vehicles">
    <div class="heading">
    <h3>Compatible Vehicles</h3>
    </div><!-- .heading -->
    <ul>
            <li>
        <p class="label">Type1</p>
        <p class="data">All</p>
    </li>
    <li>
        <p class="label">Type2</p>
      <p class="data">All</p>
    </li>
    <li>
        <p class="label">Type3</p>
      <p class="data">All</p>
    </li>
    <li>
        <p class="label">Type4</p>
      <p class="data">All</p>
    </li>
    <li>
        <p class="label">Type5</p>
      <p class="data">All</p>
    </li>
    </ul>
    </div><!-- .compatible_vehicles -->
这给了我一个这样的列表:Type1-All,Type2-All,Type3-All,Type4-All,Type5-All, 在屏幕上

现在我想在数组中获取该值,以便能够将其保存到CSV文件中。我尝试了一些事情,但大多数尝试都会出现“无法将字符串转换为数组”错误。
希望有人能帮我解决这个问题

从HTML开始:

html = '
<div class="compatible_vehicles">
    <div class="heading">
        <h3>Compatible Vehicles</h3>
    </div><!-- .heading -->
    <ul>
        <li>
        <p class="label">Type1</p>
        <p class="data">All</p>
        </li>
        <li>
        <p class="label">Type2</p>
        <p class="data">All</p>
        </li>
        <li>
        <p class="label">Type3</p>
        <p class="data">All</p>
        </li>
        <li>
        <p class="label">Type4</p>
        <p class="data">All</p>
        </li>
        <li>
        <p class="label">Type5</p>
        <p class="data">All</p>
        </li>
    </ul>
</div><!-- .compatible_vehicles -->
'
返回数组的数组:

=> [["Type1", "All"], ["Type2", "All"], ["Type3", "All"], ["Type4", "All"], ["Type5", "All"]]
从那里,您应该能够将其插入到CSV类的示例中,并使其顺利工作

现在,将要输出到屏幕字段的代码与以下内容进行比较:

data.map{ |a| a.join(' - ') }.join(', ')
=> "Type1 - All, Type2 - All, Type3 - All, Type4 - All, Type5 - All"
我所要做的就是
放入
,然后正确打印

考虑返回有用的数据结构是非常重要的。在Ruby中,哈希和数组非常有用,因为我们可以对它们进行迭代,并将它们转换成多种形式。从数组数组中创建散列是很简单的:

Hash[data]
=> {"Type1"=>"All", "Type2"=>"All", "Type3"=>"All", "Type4"=>"All", "Type5"=>"All"}

这将使查找变得非常容易。

太好了,开始了!谢谢你的帮助!
data.map{ |a| a.join(' - ') }.join(', ')
=> "Type1 - All, Type2 - All, Type3 - All, Type4 - All, Type5 - All"
Hash[data]
=> {"Type1"=>"All", "Type2"=>"All", "Type3"=>"All", "Type4"=>"All", "Type5"=>"All"}