如何使用 watir for ruby 仅隔离要抓取的某些文本

How do I isolate only certain text to be scraped using watir for ruby

尝试更好地学习 watir / ruby 我正在尝试编写代码以根据曲棍球运动员转到 ebay 列表并搜索卡片,但我只想抓取搜索结果而不是页面的其余部分。有没有办法把它夹在中间,所以我只抓取“保存此搜索”和“结果”之间的文本 eg.below

代码:

require 'watir'
require 'webdrivers'


puts 'Enter a Name: '
name = gets.chomp

puts 'PSA, BGS, or RAW?'
grade = gets.chomp.downcase
if grade == 'raw'
    grade = ''
end   


browser = Watir::Browser.new
browser.goto('ebay.ca')

browser.wait(5) { browser.text_field.exists? }
browser.text_field.set "#{name} young guns #{grade}"
browser.send_keys :enter

puts browser.text 



sleep(3)

保存此搜索 配送至:V1B2C7 2005-06 UPPER DECK #201 SIDNEY CROSBY YOUNG GUNS RC 分级 BGS 9.5“GEM 完好” 全新 1,084.00 美元 剩余时间 还剩 5d 5h(周日,06:55 p.m。) 13 出价 +C $12.99 运费 2005-06 Upper Deck #201 Sidney Crosby Young Guns True Gem BGS 9.5 w/ 10 分中心 9.5 角 9.5 边 9.5 面 10 2,199.95 美元 评价最高的卖家 立即购买 +C $12.00 运费 12个观察者 2005/06 西德尼·克罗斯比 Young Guns #201 新(其他) C $1,150.00 或最佳报价 +C $20.99 运费 22个观察者 2005-06 Upper Deck #201 Sidney Crosby YG RC Young Guns 请阅读重印 9.99 美元 剩余时间 还剩 16 小时 58 米(星期三,06:18 a.m。) 1 出价 评价最高的卖家 +C $2.99 运费 Conner Mcdavid、Crosby、Matthews、Gretzky、Price、Young Guns Reprints 全新 12.50 美元 剩余时间 3d 7h 离开(星期五,09:01 p.m。) 5 出价 +C $3.00 运费 2005 Upper Deck Young Guns #201 Sidney Crosby RC 新秀 Gem 完好 PSA 10 全新 1,761.76 美元 剩余时间 2d 6h 离开(星期四,07:41 p.m。) 17 出价 评价最高的卖家 +C $49.40 运费 来自美国 提供海关服务和国际追踪 2005 Upper Deck Young Guns #201 Sidney Crosby RC 新秀 Gem 完好 PSA 10 全新 1,829.52 美元 剩余时间 左 2d 6h(星期四,07:40 p.m。) 11 出价 评价最高的卖家 +C $50.52 运费 来自美国 提供海关服务和国际追踪 结果 分页 - 第 1 页 12 每页项目50 每页项目

您可以定位您感兴趣的特定元素。在这种情况下,搜索结果是所有具有 class“sresult”的 li 元素。

因此,您可以通过以下方式获取搜索结果的所有文本:

results = browser.lis(class: 'sresult')
results.each { |r| puts r.text }

这给出了一个非常丑陋的文本块,没有任何关于每段文本是什么的信息——例如标题与价格。最好关注每个结果中的特定元素,以 pull/format 您想要的确切信息:

results.each do |r|
  puts "Title: #{r.h3.text}"
  puts "Price: #{r.li(class: 'lvprice').text}"
  puts
end