Ответы пользователя по тегу Python
  • Как сделать автоматическую отправку формы по кнопке через Python?

    @duff89
    Предложу несколько вариантов:
    1) Решить саму капчу с помощью различных сервисов, это недорого
    2) После решения капчи происходит POST запрос на адрес (далее примерно): https://www.google.com/recaptcha/api2/userverify?k...
    В теле запроса передается решение (большой набор символов). Это я к чему, с помощью selenium-wire можно прослушивать запросы, в официальной документации там даже найдете пример ожидания запроса на определенный url
    3)На сайте есть элемент с id="g-recaptcha-response", он пустой изначально, но как только капча будет решена, там появится большой набор символов, это как раз и есть решение капчи. Можно завязать логику на этом
    Ответ написан
    1 комментарий
  • Как установить proxy (undetected_chromedriver)?

    @duff89
    Мне нравится вариант с selenium-wire
    from seleniumwire import undetected_chromedriver as uc
    wire_options = {
            'proxy': {
                'https': f'https://{login}:{password}@{ip}:{port}',
            }
        }
    driver = uc.Chrome(seleniumwire_options=wire_options)
    Ответ написан
  • Как сделать список в операторе?

    @duff89
    Как вариант можно разделить text на отдельные слова через split(), а потом уже в цикле for проверять есть такое слово в списке или нет
    Ответ написан
    Комментировать
  • Парсинг сайта Яндекс.Музыка на Python, как?

    @duff89
    Вот реальный код, только что написан и проверен, защиты там нет:
    import requests
    
    headers = {
        'Accept': 'application/json, text/javascript, */*; q=0.01',
        'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,fi;q=0.6,nb;q=0.5,is;q=0.4,pt;q=0.3,ro;q=0.2,it;q=0.1,de;q=0.1',
        'Connection': 'keep-alive',
        'Referer': 'https://music.yandex.ru/chart',
        'Sec-Fetch-Dest': 'empty',
        'Sec-Fetch-Mode': 'cors',
        'Sec-Fetch-Site': 'same-origin',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
        'X-Current-UID': '403036463',
        'X-Requested-With': 'XMLHttpRequest',
        'X-Retpath-Y': 'https://music.yandex.ru/chart',
        'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Linux"',
    }
    
    params = {
        'what': 'chart',
        'lang': 'ru',
        'external-domain': 'music.yandex.ru',
        'overembed': 'false',
        'ncrnd': '0.23800355071570123',
    }
    response = requests.get('https://music.yandex.ru/handlers/main.jsx', params=params, headers=headers)
    chart = response.json()['chartPositions']
    for track in chart:
        position = track['track']['chart']['position']
        title = track['track']['title']
        author = track['track']['artists'][0]['name']
        print(f"N-{position} - {title} - {author}")

    Выход:
    N-1 - ЗА ДЕНЬГИ ДА - INSTASAMKA
    N-2 - Отключаю телефон - INSTASAMKA
    N-3 - Komarovo - DVRST
    N-4 - Кукла колдуна - Король и Шут
    N-5 - Ножевой - A.V.G
    N-6 - Лесник - Король и Шут
    ...
    Ответ написан
    2 комментария
  • Python selenium как скачать конфиг?

    @duff89
    Чтобы не сильно менять поиск, попробуйте сделать так:
    table = driver.find_element(By.ID, "users")
    rows = table.find_elements(By.CSS_SELECTOR, "td")
                  
    for i in range(len(rows)):
            if rows[i].text == "user2":
            driver.find_elements(By.PARTIAL_LINK_TEXT, 'Android')[i].click() # берем i-й элемент
    Ответ написан
    Комментировать
  • Не работает метод .click() в библиотеке selenium, почему?

    @duff89
    При работе с защищенными сайтами "голый" selenium легко обнаруживается и не все сайты рады автоматизации. Можете попробовать undetected-chromedriver, такой вариант точно работает
    import undetected_chromedriver as webdriver # pip install undetected-chromedriver
    from selenium.webdriver.common.by import By
    
    browser = webdriver.Chrome()
    browser.get('http://youtube.com')
    
    xpath = '/html/body/ytd-app/div[1]/div/ytd-masthead/div[4]/div[3]/div[2]/ytd-button-renderer/yt-button-shape/a/yt-touch-feedback-shape/div/div[2]'
    browser.find_element(By.XPATH, xpath).click()
    Ответ написан
    Комментировать
  • Как получить дату через re Python?

    @duff89
    Как вариант, если сам текст данного сообщения не меняется, можно сделать такой шаблон:
    regex = r"(?<=сняты ).+(?= \(по)"
    Ответ написан
    Комментировать
  • Парсер на VPS получает код ответа 403. Как исправить?

    @duff89
    Я так понимаю Авито не нравится, что его парсят с сервера. Попробуйте использовать прокси
    Ответ написан
    Комментировать
  • Как научиться решать задачки на python?

    @duff89
    Говорят, что у писателей есть проблема чистого листа, когда трудно вообще начать писать. Решение простое: нужно написать "В общем ...." или "Короче блин, произошло следующее ...." . И дальше писать станет проще
    Я думаю аналогию Вы поняли, я лично в таких случаях просто рисую на бумаге схематично, что у меня есть и что мне нужно получить, потом расписываю более подробно и так далее. Становится понятнее

    Также рекомендую иногда решать те же задачки с codewars.com/ или других ресурсов
    Ответ написан
    Комментировать