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

    +1

    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
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    from selenium import webdriver
    import time
    import telegram
    
    
    def A():
        код парсера
    
    while True:
        browser = webdriver.Chrome()
        browser.maximize_window()
        browser.get('ссылка')
        try:
            BOT_TOKEN = 'токен'
            number2 = browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[5]/div/div[1]/div[1]/div').text
            SS = number2.split()
            if SS[0] == '0' and SS[1] == '0':
                browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[5]/div/div[1]/div[1]/a').click()
                time.sleep(5)
                A()
        except Exception:
            pass
    
        try:
            BOT_TOKEN = 'токен'
            number2 = browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[4]/div/div[1]/div[1]/div').text
            SS = number2.split()
            if SS[0] == '0' and SS[1] == '0':
                browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[4]/div/div[1]/div[1]/a').click()
                time.sleep(5)
                A()
        except Exception:
            pass
    
        try:
            BOT_TOKEN = 'токен'
            number2 = browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[3]/div/div[1]/div[1]/div').text
            SS = number2.split()
            if SS[0] == '0' and SS[1] == '0':
                browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[3]/div/div[1]/div[1]/a').click()
                time.sleep(5)
                A()
        except Exception:
            pass
    
        try:
            BOT_TOKEN = 'токен'
            number2 = browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[6]/div/div[1]/div[1]/div').text
            SS = number2.split()
            if SS[0] == '0' and SS[1] == '0':
                browser.find_element_by_xpath('//*[@id="games_content"]/div/div[1]/div/div/div[6]/div/div[1]/div[1]/a').click()
                time.sleep(5)
                A()
        except Exception:
            pass
        browser.close()
        time.sleep(15)

    Вопросик с хабра)

    Запостил: Safronov_alexei, 02 Июля 2020

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

    • В аду для программистов черти заставляют людей парсить HTML вот такими xpath
      /div/div[1]/div/div/div[4]/div/div[1]/div[1]/div

      и стабилизировать свой код вот такими конструкицчми
      time.sleep(15)
      Ответить
    • А после выполнения этого скрипта в памяти останется висеть процесс драйвера, потому что его надо вручную закрывать через «browser.quit()», а не «browser.close()». Какой багор )))
      Ответить
      • А что делает close?
        Ответить
        • Просто закрывает текущее активное окно браузера. Даже если оно последнее — сессия всё равно остаётся жить (что, в принципе, логично: мы можем захотеть открыть другое окно после этого).
          Ответить
    • Погуглил «site:habr.com "games_content"», нашёл девять (!) вопросов от автора сего говноподелия. Какой «Stackoverflowqna.habr.com-driven development» )))

      Кстати, идею с time.sleep() в конце ему подсказали вот здесь: https://qna.habr.com/q/769297. Там ещё эпик есть:
      print('Парсим табло.......')
      
      Round1=browser.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]/div/div/div[2]/div/div/div/div[1]/div[1]/div/div[2]/div/div/div[3]/div/section/div[1]/div[1]').text
      print(Round1)
      Round2=browser.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]/div/div/div[2]/div/div/div/div[1]/div[1]/div/div[2]/div/div/div[3]/div/section/div[1]/div[2]').text
      print(Round2)
      Round3=browser.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]/div/div/div[2]/div/div/div/div[1]/div[1]/div/div[2]/div/div/div[3]/div/section/div[1]/div[3]').text
      print(Round3)
      Round4=browser.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]/div/div/div[2]/div/div/div/div[1]/div[1]/div/div[2]/div/div/div[3]/div/section/div[1]/div[4]').text
      print(Round4)
      Round5=browser.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]/div/div/div[2]/div/div/div/div[1]/div[1]/div/div[2]/div/div/div[3]/div/section/div[1]/div[5]').text
      print(Round5)
      Round6=browser.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]/div/div/div[2]/div/div/div/div[1]/div[1]/div/div[2]/div/div/div[3]/div/section/div[1]/div[6]').text
      print(Round6)
      
      ........
      Ответить
      • Там на сайте совсем стилей нету раз приходится от корня дивы отсчитывать?
        Ответить
        • По-любому это одна из защит от парсинга. Через GET тоже поди не получишь данные, нужен js включенный.
          А еще можно раз в неделю менять вложенность тегов.
          Ответить
        • Проверил рандомную страницу — вроде как всё есть, даже user-defined элементы из «HTML5». Но насколько же это дерьмо тяжёлое и тормозное — просто пиздец. 10 фпс, всё шевелится, дёргается, пытается наебать на включение уведомлений… Пиздец, полный. Выглядит как ёбанный дорвей из середины нулевых.
          Ответить
    • Старый добрый парсинг, да еще и с 1xbet. Интересно, а какой-то анализ потом планируется?
      Знавал я одного любителя ставок на футбол. Хитрые расчеты в экселе вел https://ibb.co/Yhrk6pC
      Ответить
      • Ох уж эти любители наебать казино…
        Ответить
      • И как у него дела? Яхту купил?
        Ответить
        • Х.з. Хвалился только редкими выигрышами, якобы 20-30 т.р. в мес зарабатывал.
          Изучив пачку скринов, совпадений прогноза с реальностью я не заметил, но там и ставки делались на много разных событий.
          В эксельках еще есть вкладки со статистикой за прошлые периоды http://joxi.ru/YmExjOxCJ1RLJr
          Ответить
          • Прочитал как «Троллейбург».
            Ответить
            • Названия команд похожи на вореции из темы про питушню. Какая-нибудь Швеция или Норвегия?
              Ответить
              • P.S. Оказывается, Швеция. У них реально есть город «Треллеборг».
                Ответить

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