2015-09-20 2 views
0

Я пытаюсь очистить список ресторанов для моего почтового индекса от Deliveroo.co.ukКак отфильтровать мои результаты при очистке веб-сайта с помощью драгоценного камня Нокогири?

Мне нужно добавить способ выяснить, открыт ли ресторан или закрыт ... с веб-сайта его очень ясно, но мне просто нужно обновить свой код, чтобы отразить это.

Как мне это сделать? Мне нужно создать что-то вроде переменной «статус», а затем настроить каждый ресторан «открытым» или «закрытым».

Вот сайт я пытаюсь скрести от: https://deliveroo.co.uk/restaurants/london/maida-vale?postcode=W92DE&time=1800&day=today

И мой код ниже.

спасибо.

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

    # Store URL to be scraped 
    url = "https://deliveroo.co.uk/restaurants/london/maida-vale?postcode=W92DE" 

    # Parse the page with Nokogiri 
    page = Nokogiri::HTML(open(url)) 

    # Display output onto the screen 
    name =[] 
    page.css('span.list-item-title.restaurant-name').each do |line| 
    name << line.text 
    end 

    category = [] 
    page.css('span.restaurant-detail.detail-cat').each do |line| 
    category << line.text 
    end 

    delivery_time = [] 
    page.css('span.restaurant-detail.detail-time').each do |line| 
    delivery_time << line.text 
    end 

    distance = [] 
    page.css('span.restaurant-detail.detail-distance').each do |line| 
    distance << line.text 
    end 

    status = [] 

    # Write data to CSV file 
    CSV.open("deliveroo.csv", "w") do |file| 
    file << ["Name", "Category", "Delivery Time", "Distance", "Status"] 
    name.length.times do |i| 
    file << [name[i], category[i], delivery_time[i], distance[i]] 
    end 
    end 
    end 

ответ

1

Нам нужно проверить li.restaurant--details иметь/не класс unavailable для закрытия/открытия ресторана.

status = [] 
page.css('li.restaurant--details').each do |line| 
    if line.attr("class").include? "unavailable" 
    sts = "closed" 
    else 
    sts = "open" 
    end 
    status << sts 
end 

Btw, вы должны удалить пробельные когда прибудете restaurant_name и т.д ...

page.css('span.list-item-title.restaurant-name').each do |line| 
name << line.text.strip 
end 

Вы можете обратиться мой код на здесь: https://gist.github.com/vinhnglx/4eaeb2e8511dd1454f42

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