ruby - 使用周围元素引用数据

标签 ruby nokogiri mechanize watir browser-automation

我想从列表中提取一组数字。列表项由其中的标题标识,并以随机顺序出现。我想(例如在第一个列表项中)将数字( 1,287,498 )分配给包含在同一 <li> 中的标题标签 ( Russia )。

<ul>

<li> 
<h6>Russia</h6> 
<p>Red</p> 
<p>1,287,498</p>
</li>

<li> 
<h6>USA</h6> 
<p>Blue</p>
<p>782,2378,223</p>
</li>

...etc.

</ul>

我想要这样的东西:
russia = 1,287,498

我试过用XPath,但是没用,大概是因为顺序是随机的;它一直分配错误的变量。

最佳答案

lis = doc.xpath('//li') # Or however you are getting the right elements

data = Hash[ lis.map{ |li| [li.at('h6').text, li.search('p').last.text] }]
#=> {
#=>   "Russia" => "1,287,498",
#=>   "USA"    => "782,2378,223",
#=> }

p data["Russia"]
#=> "1,287,498"

此答案假定 <p>带数字的是<li>中的最后一段.由于您尚未共享完整文档,因此很难知道这是否正确。

关于ruby - 使用周围元素引用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22158449/

相关文章:

Python - Mechanize - 如何知道它是否有效?

ruby-on-rails - Gem 文件不会更新或安装 bundler

python - 使用 mechanize 提交没有控件名称的表单

mysql - Rails 列名冲突

ruby - 无法在 OSX 上安装 gem mysql

ruby - 使用 Nokogiri 根据子属性的值提取父属性的值

ruby - 如何保留 XML 数组到哈希转换中的顺序?

python - 使用 twill 的内置 Mechanize 分布会在 _debug 上引发 AttributeError 吗?

ruby-on-rails - 如何遍历年和周

ruby - MacVim 中的 command-t 插件 - 使 MacVim 无法工作