1. Python / Говнокод #27257

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    import time
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--incognito')
    
    driver = webdriver.Chrome(chrome_options=chrome_options)
    
    #Login.
    driver.get("https://m.vk.com")
    
    email = 'не скажу!'
    password = '123'
    
    email_field = driver.find_element_by_name("email")
    email_field.send_keys(email)
    password_field = driver.find_element_by_name("pass")
    password_field.send_keys(password, Keys.RETURN)
    
    #Scrolling audios.
    driver.get("https://m.vk.com/audio76306432")
    
    songs_amount = 6200
    batch_amount = 20
    currently_loaded = 0
    while currently_loaded < songs_amount:
        driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
        try:
             WebDriverWait(driver, 0).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a[class='show_more']")))
             print('Click')
        except:
            print('More button not located!')
        print(f"{currently_loaded} / {songs_amount}")
        try:
            scroll_defence_element = driver.find_element_by_css_selector("a[class='show_more AudioSection__showMore--my']")
            scroll_defence_element.click()
            print('Click!!!')
        except:
            print("No button to click")
        currently_loaded += batch_amount
    
    #todo: save the page
    #time.sleep(10)
    #driver.quit()

    Я уже давно хотел себе скачать аудио из вк, хотя бы их список, мало ли что... В общем, оказалось, что апи для музыки закрыли в 2016, и я немного опоздал )))

    И я решил написать на питоне штуку, чтобы она мне за ночь прокрутила весь список песен, а я бы потом распарсил страничку и достал названия. кто найдёт пасхалку -- тот молодец!

    Запостил: JloJle4Ka, 16 Февраля 2021

    Комментарии (15) RSS

    • Добрый вечер, Вазген.
      Ответить
      • Деанон по плейлисту?
        Ответить
      • >владикавказ
        блядь, это же осетия
        Ответить
      • Добрый вечер, OCETuHCKuu_nemyx, ну что, перепишем этот код на «Delphi»?
        Ответить
        • Борланд паскаль, золотой язык моего детства.. первая змейка, первая сортировка пузырьком, первый арканоид.. и всё запаганили каким-то вонючим стертором!
          Ответить
    • двадцать лет назад я делал макрос для ворда. Я запустил режим записи, он сгенерировал код для моих действий на VB. А дальше я его поправил.

      Теперь пишут это вручную. ДВадцать лет регресса
      Ответить
      • Selenium как раз это и делает в общем-то
        Ответить
        • Selenium умеет записывать рази?

          На самом деле VBA конечно лучше, потому что он работал с документированными объектами, а не вот с этим вот
          >a[class='show_more AudioSection__showMore--my']
          Ответить
          • Может и не умеет конечно.

            Но многие другие тулы для UI тестов умеют
            Ответить
            • https://support.levelaccess.com/hc/en-us/articles/360038014611-Recording-a-Selenium-Macro-using-the-Selenium-IDE

              Оказывается, умеет!

              Но там нетривиальная питушня. Если быстро скроллить, то вк окукливается и вместо бесконечного скролла выдаёт кнопку "показать ещё", при этом до такого кейса ещё доскроллить нужно, в итоге мокрос большой получится. Да и сложно всё это, легче сразу написать самому.
              Ответить
          • Есть жеж selenium ide

            а уже написали
            Ответить
            • окей, зумер
              Ответить
            • > selenium ide

              Хочу, чтобы для каждой либы была своя ИДЕ:
              1. QtCreator IDE
              2. Boost::IDE
              3. Asio IDE
              4. WxIDE
              5. GK IDE (для написания комментариев на говнокод)
              6. IDE чтобы продолжить этот список, а то я устал.
              Ответить
              • Selenium это не либа вроде, там миллион клиентов на все языки
                Ответить
    • Пока меня не было, говнокод лютовал. Я вернулся - но говнокод продолжает лютовать...
      Быть может, зря я так обиженку подрубил? Может, не стоило?
      Ответить

    Добавить комментарий