0

2 つのブロックからどのように選択しますか。

page.parser.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "realviewLink", " " ))]').each do |product|

page.parser.xpath('//*[contains(concat( " ", @class, " " ), concat( " ", "gbb-productTitle", " " ))]').each do |product|

begin/recuse と if/else を追加してみましたが、予期しないキーワード エラーが発生し続けました。最初のステートメント = [] の場合、2 番目のステートメントを選択するにはどうすればよいですか?

4

1 に答える 1

0

あなたのコードから、それを行う簡単な方法は次のとおりです。

first_xpath_expr = '//*[contains(concat( " ", @class, " " ), concat( " ", "realviewLink", " " ))]'
second_xpath_expr = '//*[contains(concat( " ", @class, " " ), concat( " ", "gbb-productTitle", " " ))]'
xpath_result = page.parser.xpath(first_xpath_expr).map { |product| process_first_xpath_expr(product) }
if xpath_result.blank?
  xpath_result = page.parser.xpath(second_xpath_expr).map { |product| process_second_xpath_expr(product) }
end
于 2012-07-12T03:08:29.797 に答える