2011-12-22 33 views
0

我有以下HTML:的Ruby/Rails - Scrapi宝石问题抓下一格文本

<div class="tvShow" align="left"> 
    <div class="clearfix" style="margin:0px 0px;"> 
     <h3 class="left" style="margin:0px 0px">FIRST TUESDAY BOOK CLUB WITH JENNIFER BYRNE</h3> 
    </div> 

    <div>Thursday 22nd December at 2.00 pm (60 minutes)</div> 

    <div><b>Channel: </b>ABC1</div> 
    ... 
</div> 

我使用scrapi宝石刮内容。

这是我迄今为止提取h3

channel_item = Scraper.define do 
    process "h3", :name => :text 
end 

# let scrapi begin 

listings = Scraper.define do 
    array :programs 
    process "div.tvShow", :programs => channel_item 
    result :programs 
end 

# loop through the listings 

listings.scrape(uri).each do |program| 
    puts program.name.titleize # h3 text 
end 

我不完全知道如何提取周四12月22日下午2点(60分钟)通道: ABC1文本。

任何帮助,将不胜感激。提前致谢。

+0

当你已经问过这个问题的JSON和Nokogiri版本时,你为什么试图使用ScrAPI? – 2011-12-25 20:48:06

+1

您可以使用Nokogiri获取*任何*数据。 – 2011-12-27 00:34:48

回答

1

试试这个:

channel_item = Scraper.define do 
    process "h3", :name => :text 
    process "div[2]", :time => :text 
    process "div[3]", :channel => :text 
end 

http://saxon.sourceforge.net/saxon6.5.3/expressions.html#NodeSetExpressions

希望这有助于。

+0

我得到以下错误:'selector.rb:336:in'initialize':Invalid selector:[2](ArgumentError)' ' – fuzz 2011-12-22 11:56:29

+0

尝试''div [position()= 2]''而不是''div [2]“'。 – DNNX 2011-12-22 12:21:49

+1

好吧,它看起来像Scrapi的CSS选择器中不支持谓词。我建议改为Nokogiri。 – DNNX 2011-12-26 08:17:03