我有這樣的代碼:基於其他相鄰元素的文本刮取數據?
<div id="left">
<div id="leftNav">
<div id="leftNavContainer">
<div id="refinements">
<h2>Department</h2>
<ul id="ref_2975312011">
<li>
<a href="#">
<span class="expand">Pet Supplies</span>
</a>
</li>
<li>
<strong>Dogs</strong>
</li>
<li>
<a>
<span class="refinementLink">Carriers & Travel Products</span>
<span class="narrowValue"> (5,570)</span>
</a>
</li>
(etc...)
我敢scriping這樣的:
html = file
data = Nokogiri::HTML(open(html))
categories = data.css('#ref_2975312011')
@categories_hash = {}
categories.css('li').drop(2).each do | categories |
categories_title = categories.css('.refinementLink').text
categories_count = categories.css('.narrowValue').text[/[\d,]+/].delete(",").to_i
@categories_hash[:categories] ||= {}
@categories_hash[:categories]["Dogs"] ||= {}
@categories_hash[:categories]["Dogs"][categories_title] = categories_count
end
所以現在。我想要做同樣的事情,但不使用#ref_2975312011
和「狗」。
所以我想我可以告訴引入nokogiri如下:
報廢
li
元素(從第三個開始)等也都通過一個鏈接包圍的文字寵物用品li元素右下 和一個span標籤。
任何想法如何實現?
'?你能否清楚你的需求?我仍然不清楚你需要的是敵人.. –
@Babai那部分我已經完成了。用'drop(2)'。基本上它是通過'li'元素循環並放棄前兩個元素。 – alexchenco
沒關係..我只是想更清楚地知道你的新需求,所以如果可能的話,我可以幫你.. :) –