Задать вопрос
Контакты
Местоположение
Беларусь, Брестская обл., Брест

Наибольший вклад в теги

Все теги (9)

Лучшие ответы пользователя

Все ответы (15)
  • Из-за медленного интернета selenium не загружает важные js файлы?

    @duff89
    Возможно помогу, если Вы имеете ввиду файлы js (или любые другие типа css), которые постоянно грузятся одни и те же с сайта без изменения, то можно их подменить на локальные. Сделать можно через selenium-wire
    Суть примерно такая:
    self.driver.request_interceptor = interceptor  # ставим подмену запросов
    def interceptor(request):
        """Подмена css на локальные"""
    
        """эти файлы не меняем"""
        real_urls = (
            'styles.css',
    
        )
        if str(request.url)[-4:] == '.css':
            """Ищем название файла"""
            file = re.search(r"/([^/]+\.css)$", str(request.url)).group(1)
            if file not in real_urls:
                try:
                    request.create_response(
                        status_code=200,
                        headers={'Content-Type': 'text/css'},  # Optional headers dictionary
                        body=open(f'fake_files/{file}').read()  # Optional body
                    )
                except:
                    pass

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

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

Лучшие вопросы пользователя

Все вопросы (6)