Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 25, 2017 13:14:36

UchenikO
Зарегистрирован: 2017-08-25
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Scraping. Средняя стоимость билетов в заруб. страны из Москвы.

Подскажите общий алгоритм получения средней цены за билет во все зарубежные страны из Москвы в декабре месяце примерно так должен выглядеть?

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

Очень хотелось бы подробного разъяснения и советов, спасибо.

Офлайн

#2 Авг. 25, 2017 13:54:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

Scraping. Средняя стоимость билетов в заруб. страны из Москвы.

Сохрани сначала просто данные на диск без каких-либо подсчётов. А потом по сохранённым данным подсчитывай всё, что надо. Как бы два скрипта должно быть: один скачивает данные, а другой берёт данные и что-то считает. Они не должны друг про друга знать.



Офлайн

#3 Авг. 25, 2017 16:16:02

UchenikO
Зарегистрирован: 2017-08-25
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Scraping. Средняя стоимость билетов в заруб. страны из Москвы.

py.user.next
Спасибо, а в каком порядке сохранять данные?
Если несложно, то можете пример привести?

Офлайн

#4 Авг. 25, 2017 16:51:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10019
Репутация: +  857  -
Профиль   Отправить e-mail  

Scraping. Средняя стоимость билетов в заруб. страны из Москвы.

UchenikO
а в каком порядке сохранять данные?
Создай таблицу на диске, заполни её любыми значениями (как будто ты её скачал с сайта), потом пиши скрипт подсчёта для этой таблицы. А как напишешь, так тебе станет понятно, что и куда нужно сохранять при скачивании. Потом останется только скрипт скачивания таблицы написать.

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

UchenikO
1. Получаем список стран из википедии (как это сделать удобно, в виде CSV?) —->
Не надо усложнять то, что не требует усложнения. Список стран можно сохранить в текстовый файл построчно. Чем проще данные, передаваемые туда-сюда, тем лучше, так как для простых данных легко писать новые программы. Тот же csv, если ты его сохранил, то в любой программе, которая будет с ним потом работать, надо писать разбор csv-файла сначала. А когда у тебя просто текст, то надо просто прочитать строки файла, что уже встроено везде (на любом языке даже, так как бывает, что программа, создающая данные, написана на одном языке, а программа, читающая данные, - на другом языке). Проще прочитать строки файла, чем искать модуль для разбора и изучать его семантику.



Отредактировано py.user.next (Авг. 25, 2017 17:01:51)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version