2017-02-04 2 views
0

Я создал веб-скребок. Мне нужно, чтобы очистить цены и спальни данного района. Иногда span.first_detail_cell вернет Furnished, а в остальное время он вернет цену. Мне нужно написать что-то, что может пропустить span.first_detail_cell, если оно меблировано и посмотреть в следующей ячейке по цене. Я думаю, мне нужно написать оператор if, но не уверен в параметрах. Любая помощь будет замечательной!Веб-скребок с использованием Ruby - если statment

require 'open-uri' 
require 'nokogiri' 
require 'csv' 

url = "https://streeteasy.com/for-rent/bushwick" 
page = Nokogiri::HTML(open(url)) 

page_numbers = [] 
page.css("nav.pagination span.page a").each do |line| 
    page_numbers << line.text 
end 

max_page = page_numbers.max 

beds = [] 
price = [] 

max_page.to_i.times do |i| 

    url = "https://streeteasy.com/for-rent/bushwick?page=#{i+1}" 
    page = Nokogiri::HTML(open(url)) 

    page.css('span.first_detail_cell').each do |line| 
    beds << line.text 
    end 

    page.css('span.price').each do |line| 
    price << line.text 
    end 

end 

CSV.open("bushwick_rentals.csv", "w") do |file| 
    file << ["Beds", "Price"] 

    beds.length.times do |i| 
    file << [beds[i], price[i]] 
    end 
end 
+0

Вы всегда можете 'дальше, если line.text.to_f! = 0.0' рубин' .to_f' вернет 0.0, если цена не конвертируется в число –

+0

@ CyrilDuchon-Doris Как бы это выглядело в моей ситуации? –

ответ

1
page.css('span.first_detail_cell').each do |line| 
    if line.text.include?("Furnished") 
     # do something hre 
    else 
     beds << line.text 
    end 
    end 
+0

Спасибо за помощь! –

Смежные вопросы