Форум сайта python.su
0
Подскажите общий алгоритм получения средней цены за билет во все зарубежные страны из Москвы в декабре месяце примерно так должен выглядеть?
Т.е. мне нужен рейтинг, примерно похожий на:
| страна | ср.стоимость билета в страну |
'США' 21250 руб.
'Германия' 9400 руб.
——————————————————–
Например взять все с kayak.ru
1. Получаем список стран из википедии (как это сделать удобно, в виде CSV?) —->
2. Получаем список дат в декабре
3. Заполняем поле ‘куда’ через selenium.element.send_keys - берем первое из списка - ‘Бразилия’
4. Заполняем поле ‘когда’ - ‘01.12.2017’ (берез из списка с датами) через selenium.element.send_keys, жмем ‘Найти’, видим список городов в заданной стране
5. Теперь мы находим среднюю цену в каждом городе
Например:
5.1 Кликаем по кнопке ‘Найти цены’ опять же, исп-я selenium, в городе ‘Рио-де-Жанейро’
5.2 Видим список цен на 1 декабря в городе, собираем их через Beautiful Soup, видимо сразу суммируем и делим на кол-во предложений или заносим в БД или CSV? # Средняя цена на билет в городе ‘Рио-де-Жанейро’ на 01.12.2017
5.3 Переходим к следующему городу (наверно лучше вернуться на страницу назад?)
6. Получаем:
| город | ср. цена за билет
'Рио-де-Жанейро' 15900 руб.
'Сан-Пауло' 16800 руб.
…
7. Дальше —-> сумма(средняя цена в каждом городе)/кол-во городов = средняя цена на билет в стране ‘Бразилия’ на ‘01.12.2017’
Сохраняем в БД, CSV или просто в список?
8. Меняем дату в шаге 4, повторяем 5-7 и так до ‘31.12.2017’ включительно
9. В итоге получим среднюю стоимость билета в стране ‘Бразилия’ за каждый день, отсюда просто
сумма(стоимость билета на каждый день в декабре месяце) / кол-во дней = средняя стоимость билета в стране
10. Сохраняем.
11. Переходим к следующей стране
Очень хотелось бы подробного разъяснения и советов, спасибо.
Офлайн
857
Сохрани сначала просто данные на диск без каких-либо подсчётов. А потом по сохранённым данным подсчитывай всё, что надо. Как бы два скрипта должно быть: один скачивает данные, а другой берёт данные и что-то считает. Они не должны друг про друга знать.
Офлайн
0
py.user.next
Спасибо, а в каком порядке сохранять данные?
Если несложно, то можете пример привести?
Офлайн
857
UchenikOСоздай таблицу на диске, заполни её любыми значениями (как будто ты её скачал с сайта), потом пиши скрипт подсчёта для этой таблицы. А как напишешь, так тебе станет понятно, что и куда нужно сохранять при скачивании. Потом останется только скрипт скачивания таблицы написать.
а в каком порядке сохранять данные?
UchenikOНе надо усложнять то, что не требует усложнения. Список стран можно сохранить в текстовый файл построчно. Чем проще данные, передаваемые туда-сюда, тем лучше, так как для простых данных легко писать новые программы. Тот же csv, если ты его сохранил, то в любой программе, которая будет с ним потом работать, надо писать разбор csv-файла сначала. А когда у тебя просто текст, то надо просто прочитать строки файла, что уже встроено везде (на любом языке даже, так как бывает, что программа, создающая данные, написана на одном языке, а программа, читающая данные, - на другом языке). Проще прочитать строки файла, чем искать модуль для разбора и изучать его семантику.
1. Получаем список стран из википедии (как это сделать удобно, в виде CSV?) —->
Отредактировано py.user.next (Авг. 25, 2017 17:01:51)
Офлайн