Задать вопрос
Контакты
Местоположение
Россия

Достижения

Все достижения (2)

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

Все теги (20)

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

Все ответы (17)
  • Как обойти капчу на Python?

    Amigun
    @Amigun Автор вопроса
    Джун : |
    Если у вас возникла такая-же проблема как у меня, а именно капча при парсинге сайта, то прочитайте как я её решил.

    Изначально я использовал библиотеки requests (для отправки запросов к сайту) и bs4 (для самого парсинга).
    Сначала я сделал задержку, если программа встречает капчу, то она останавливает свою работу на 1 час, и дальше продолжает работать. Это не сработало, ни через час, ни через два, ни через 3 дня.
    Дальше я думал подключить selenium, и когда выходит капча, открывать эту страничку с помощью selenium, там проходить капчу вручную, закрывать selenium, и пробовать через requests еще раз отправлять запросы на страницу. Капча все равно осталась.
    Переписать парсер под selenium - без использования requests и bs4, хорошее решение, но не всегда подходит. В моем случае было слишком муторно использовать это, поэтому я обратился сюда.
    Тут мне подсказали такой вариант: использовать сессии (requests.Session()) и очищать куки при смене IP (кстати да, я подключал библиотеки для смены IP через proxy, а так же библиотека для генерации fake-User-Agent) и передавать в заголовки параметр referer. Возможно это и работает, но не для меня. Капча все равно осталась.

    Ну и вот собственно само решение :)
    Я решил заменить библиотеку requests на selenium. Я через него подключался к сайту (у меня даже открывалось окно браузера) и с помощью метода page_source я получал html-код странички. Кстати, будьте внимательными, я так понял что с помощью этого метода можно получить только html, без js и css. Поэтому если сайт использует js для генерации контента, то у вас вряд-ли это получится. А потом, я просто с помощью bs4 парсил полученную html страничку, и извлекал из нее нужные мне данные. Да, капча все равно появлялась, но она появилась лишь однажды, я её вручную решил прямо через окно selenium, и можно сказать что я обошел капчу, так как она больше в процессе парсинга у меня не выскакивала.

    Можете попробовать все описанные выше способы, может что и поможет. С каждым сайтом нужно извращаться по своему)
    Ответ написан
    1 комментарий
  • Как вставить переменную в sql запрос python?

    Amigun
    @Amigun
    Джун : |
    Отредактировано

    sql.execute(f"UPDATE users SET message = {random[0]} WHERE id = {user[0]};")
    db.commit()


    Если тип данных string, то нужно взять в кавычки:
    sql.execute(f"UPDATE users SET message = '{random[0]}' WHERE id = '{user[0]}';")
    db.commit()


    Во избежание sql-инъекций, лучше использовать следующий вариант:
    sql.execute("UPDATE users SET message = ? WHERE id = ?;", (random[0], user[0]))
    db.commit()
    Ответ написан
    8 комментариев
  • Где берут фильмы для онлайн-кинотеатра?

    Amigun
    @Amigun
    Джун : |
    Есть разные видеобалансеры, но они вроде как нелегальные. Знаю несколько, которые вам еще и платить будут, если на вашем сайте будут смотреть эти фильмы/сериалы, но не буду говорить их названия (т.к. они не легальные)
    Ответ написан
    1 комментарий
  • Как запустить файл с телеграм-ботом из другого .py файла?

    Amigun
    @Amigun Автор вопроса
    Джун : |
    Для тех, у кого возникнет такая же проблема, как и у меня. Вот как я ее решил:

    У меня была гипотеза о том, что bot_n.py отрабатывает все принты и закрывается. Чтобы в этом удостовериться, я написал bash скрипт, который открывал бы мне bot_n.py, а этот bash скрипт я запускал из своего main_bot.py по команде. У меня открывался терминал и сразу же закрывался.

    Оказывается, я забыл в bot_n.py дописать следующее:
    if __name__ == '__main__':
        executor.start_polling(dp)


    Теперь bot_n.py запускается, и бот работает. Но в это время не работает main_bot.py. Поэтому нужно добавить многопоточность. Вот и все.
    Ответ написан
    Комментировать

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

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