Найти - Пользователи
Полная версия: Scraping. Средняя стоимость билетов в заруб. страны из Москвы.
Начало » Python для новичков » Scraping. Средняя стоимость билетов в заруб. страны из Москвы.
1
UchenikO
Подскажите общий алгоритм получения средней цены за билет во все зарубежные страны из Москвы в декабре месяце примерно так должен выглядеть?

Т.е. мне нужен рейтинг, примерно похожий на:
| страна | ср.стоимость билета в страну |
'США' 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. Переходим к следующей стране

Очень хотелось бы подробного разъяснения и советов, спасибо.
py.user.next
Сохрани сначала просто данные на диск без каких-либо подсчётов. А потом по сохранённым данным подсчитывай всё, что надо. Как бы два скрипта должно быть: один скачивает данные, а другой берёт данные и что-то считает. Они не должны друг про друга знать.
UchenikO
py.user.next
Спасибо, а в каком порядке сохранять данные?
Если несложно, то можете пример привести?
py.user.next
UchenikO
а в каком порядке сохранять данные?
Создай таблицу на диске, заполни её любыми значениями (как будто ты её скачал с сайта), потом пиши скрипт подсчёта для этой таблицы. А как напишешь, так тебе станет понятно, что и куда нужно сохранять при скачивании. Потом останется только скрипт скачивания таблицы написать.

Selenium использовать не рекомендуется (он сделан для тестирования по большей части, он медленный и жрёт память), надо запросы напрямую посылать, а для этого надо проанализировать трафик через Firebug, чтобы понять, что посылается туда и что присылается оттуда, когда жмёшь на кнопки в браузере.

UchenikO
1. Получаем список стран из википедии (как это сделать удобно, в виде CSV?) —->
Не надо усложнять то, что не требует усложнения. Список стран можно сохранить в текстовый файл построчно. Чем проще данные, передаваемые туда-сюда, тем лучше, так как для простых данных легко писать новые программы. Тот же csv, если ты его сохранил, то в любой программе, которая будет с ним потом работать, надо писать разбор csv-файла сначала. А когда у тебя просто текст, то надо просто прочитать строки файла, что уже встроено везде (на любом языке даже, так как бывает, что программа, создающая данные, написана на одном языке, а программа, читающая данные, - на другом языке). Проще прочитать строки файла, чем искать модуль для разбора и изучать его семантику.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB