selenium на Python за 25 минут: автоматизированная выгрузка FinAM

Поделиться
HTML-код
  • Опубликовано: 7 июн 2024
  • 0:00 Содержание задачи: есть таблица с 50-ю наименованиями фьючерсов Московской биржи. Требуется выгрузить с сайта finam.ru статистику дневной торговли этими фьючерсами.
    1:35 Варианты решения: вручную (долго и чревато ошибками), посредством API веб-источника,
    4:50 посредством пакета requests (у каждого инструмента собственный числовой идентификатор, который меняется каждый квартал и который надо отслеживать, что неудобно),
    6:10 посредством пакета selenium (идеально).
    6:50 Почему selenium - не первый, а последний способ в списке?
    10:40 Календарь. Пакет datetime .
    12:40 Константная и переменная части URL для requests
    13:10 Активация selenium .
    15:25 Важность «засыпания».
    17:05 Поиск XPath в веб-инспекторе.
    18:50 Прокрутка страницы вниз.
    20:15 Цикл. Константная и переменная части URL для для selenium .
    22:35 Конструкция try except для обработки ошибок.
    Методы selenium: обратиться к URL (get), найти на странице элемент (find_element), кликнуть на него (click), скролить страницу (execute_script).

Комментарии • 9

  • @user-ew8ne9ok7w
    @user-ew8ne9ok7w  9 месяцев назад +2

    С момента публикации видео разработчики selenium в очередной раз внесли ряд изменений в его работу. Главные из них: selenium не работает в CoLab и запускается следующим кодом:
    from selenium import webdriver
    rom selenium.webdriver.common.by import By
    driver = webdriver.Chrome()
    driver.get(Интересующий Вас URL)
    Причём *перед первым запуском selenium* следует
    1) отсюда: chromedriver.chromium.org -- скачать chromedriver для Вашей операционной системы под актуальную версию браузера, назначенного на Вашем компьютере браузером по умолчанию
    2) предварительно внести в PATH Windows (как на MacOS -- не знаю) путь к chromedriver.exe . Пример кода:
    path = r"C:\Program Files\chromedriver-win64\chromedriver.exe"
    sys.path.insert(0, path)
    3) после исполнения этого кода удалите его или закоментьте

  • @user-ew8ne9ok7w
    @user-ew8ne9ok7w  Год назад +2

    Итоговый скрипт в формате .pdf drive.google.com/file/d/1Iu8GfQTdw_Wq87oL-II6LqffIttDKN8h -- чтобы легче было свериться, но не копипастить. Главная задача итогового скрипта -- показать логику решения задачи без промежуточных шагов. *С момента записи видео в скрипт внесены непринципиальные изменения* относительно скрипта в самом видео (названия файлов Excel, пути к файлам и т.п.).

    • @user-ew8ne9ok7w
      @user-ew8ne9ok7w  Год назад +1

      Файл datetime.xlsx docs.google.com/spreadsheets/d/1s8og9GIP0HMYra_5OAQk01frTov1ThGx

    • @user-ew8ne9ok7w
      @user-ew8ne9ok7w  Год назад +1

      Файл datetime.xlsx docs.google.com/spreadsheets/d/1oIbwAxQQigxu3W75Qs78el7-Bp1bYy6l

    • @alexeykorchevnyy3109
      @alexeykorchevnyy3109 Год назад +2

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

    • @user-ew8ne9ok7w
      @user-ew8ne9ok7w  Год назад +1

      @@alexeykorchevnyy3109 здравствуйте! Для колаба требуется иной набор команд install и import . Попробуйте:
      !pip install selenium
      !apt-get update # to update ubuntu to correctly run apt install
      !apt install chromium-chromedriver
      !cp /usr/lib/chromium-browser/chromedriver /usr/bin
      import sys
      sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver')
      from selenium import webdriver
      chrome_options = webdriver.ChromeOptions()
      chrome_options.add_argument('--headless')
      chrome_options.add_argument('--no-sandbox')
      chrome_options.add_argument('--disable-dev-shm-usage')
      wd = webdriver.Chrome('chromedriver',options=chrome_options)
      wd.get("www.webite-url.com")

    • @alexeykorchevnyy3109
      @alexeykorchevnyy3109 Год назад

      @@user-ew8ne9ok7w получилось хотябы не т ошибок но браузер так и не открылся и страницу я не увидел, Алексей я вот схожий скрипт осколками видел на англоязычных ресурсах, и вы прям выжимку сделали, но это получается "рыбка" а я хочу "удочку" в плане разобраться сам подскажите ресурс где вот так грамотно вам про такой скрипт выше написали