Я будую скрепер, щоб витягувати історії з новинних сайтів. Ось приклад із сайту новин BBC:
require "nokogiri"
require "open-uri"
doc = Nokogiri::HTML(open("http://www.bbc.co.uk/news/"))
doc.css("h2 a.story").each do |h2|
puts "#{h2.content} - http://www.bbc.co.uk#{h2["href"]}"
end
Що мені потрібно зробити, щоб повернути певну кількість результатів, а не всі?
Я переглянув документацію Nokogiri, і це не дуже пояснювально.
Відповіді:
2 для відповіді № 1Це не проблема Nokogiri, це проблема масиву Ruby.
Використовуйте take
для перших трьох результатів:
doc.css("h2 a.story").take(3).each do |h2|
puts "#{h2.content} - http://www.bbc.co.uk#{h2["href"]}"
end
Для четвертого по восьмий результат використовуйте діапазон:
doc.css("h2 a.story")[3..7].each do |h2|
puts "#{h2.content} - http://www.bbc.co.uk#{h2["href"]}"
end