这是我的表格:
<tbody><tr>
<td class="rhs">Number:</td>
<td id="number"><strong>2</strong></td>
</tr>
<tr>
<td class="rhs">Total:</td>
<td id="total"><strong>£60,000</strong></td>
</tr>
<tr>
<td class="rhs">GrandTotal</td>
<td><strong>£200,000</strong></td>
</tr>
<tr>
<td class="rhs">Limit:</td>
<td><strong>£550,000</strong></td>
</tr>
<tr>
<td class="rhs">Frequency:</td>
<td><strong>Annually</strong></td>
</tr>
<tr>
<td class="rhs">Percentage:</td>
<td><strong>0%</strong></td>
</tr>
<tr class="display-total">
<td class="rhs">Year 1:</td>
<td><strong>£480.00</strong></td>
</tr>
</tbody></table>
我正在和Watir一起努力去刮擦&#39;值并将它们存储在我的应用程序中的变量中。
def scrape_quote
puts @quote.number = @browser.td(:id, 'number').text
@quote.total = @browser.td(:id, 'total').text
@quote.grand_total= @browser.tr(:index => '3').td(:index => '1').text
@quote.limit = @browser.tr(:index => '4').td(:index => '1').text
@quote.frequency = @browser.tr(:index => '5').td(:index => '1').text
@quote.percentage = @browser.tr(:index => '6').td(:index => '1').text
@quote.yr1 = @browser.tr(:index => '7').td(:index => '1').text
puts @quote.number + ' ' + @quote.total + ' ' + @quote.grand_total
+ ' ' + @quote.limit + ' ' + @quote.frequency + ' ' + @quote.commission
+ ' ' + @quote.yr1
end
(只是看看方法是否有效,一旦工作,我实际上将它们保存在模型中。)
不幸的是,上述内容并未按预期捕获和/或存储这些值。你能帮我看看我的方式错误吗?
三江源。
答案 0 :(得分:0)
您尝试使用String作为索引值来访问值,该值应为整数。在任何情况下,最终代码应如下所示:
rows = @b.trs #Retrieve all trs
scraped_values = {} #Creating a dictionary to store scraped values
for row in rows #iterate over trs
scraped_values[row[1].id] = row[1].text #retrieve the data
end
puts scraped_values
答案 1 :(得分:0)
在watir中,将s放在元素标记后获取具有该标记的所有元素并将其放在数组上。
因此,在您的情况下,如果您输入命令@browser.trs.length
,则值将为7,因为您的表中有7行。
至于id,我总是使用@browser.td(:id=>'id')
并且它始终有效,尽管@browser.td(:id, 'id')
也适用于我。
def scrape_quote
puts @quote.number = @browser.td(:id=>'number').text
@quote.total = @browser.td(:id=>'total').text
@quote.grand_total= @browser.trs[3].tds[1].text
@quote.limit = @browser.trs[4].tds[1].text
@quote.frequency = @browser.trs[5].tds[1].text
@quote.percentage = @browser.trs[6].tds[1].text
@quote.yr1 = @browser.trs[7].tds[1].text
puts @quote.number + ' ' + @quote.total + ' ' + @quote.grand_total
+ ' ' + @quote.limit + ' ' + @quote.frequency + ' ' + @quote.commission
+ ' ' + @quote.yr1
end