Search
Write a publication
Pull to refresh

Comments 9

Кажется, что самым простым способом решения данной проблемы (если нет большого багажа старого кода) является использование playwright :)

В работе они очень сильно похожи, даже были на хабре статьи, как автоматически сконвертировать тесты с селениума на playwright

Бонусом идет избавление еще от некоторого числа костылей, которые требуются селениуму, чтобы адекватно работать

Мне кажется об этом решении могут знать только тестировщики. Для разрабов мой вариант должен быть топом)) Кстати, его можно упростить, и в аргумент к настройке веб-драйвера передать просто строку с учетными данными прокси:

proxy_user = "USERNAME"
proxy_password = "PASSWORD"
proxy_host = "PROXY_HOST"
proxy_port = "PROXY_PORT"

# Настройка прокси с учетом учетных данных
proxy = f"http://{proxy_user}:{proxy_password}@{proxy_host}:{proxy_port}"

chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={proxy}')

Но я решил описать способ, который работает на 200%

Поддержу, достойная библиотека, мощные спонсоры, качественная поддержка Пайтона, подробная дока, настройка прокси там описана и легко находится. Давно уже пора забыть про Селениум, но нет, куча пересказов устаревших статей, обрывки примеров, как же это всё бросить...

Спасибо хабру и сообществу, я первый раз услышал об этой библиотеке. Крутая штука. Даже асинхронный API поддерживает.

Такая же проблема была у меня под java/kotlin при работе selenium+chrome. Пришлось писать прокси обертку. Но больше всего удивило, что казалось бы такая стандартная потребность как прокси должно быть из коробки, а ее блин нет

Это конечно интересно но "парсинг" и "эмулация деиствии пользователя" - это разные задачи и требуют разных инструментов.
1) Если требуется рендеринг js, то есть куча расширении бублиотек парсинга для этого. У Requests есть Requests-HTML (Full JavaScript support ), у BS4 тоже можно запустить рендеринг js.
2) Но если требуется 1, то с вероятностью 100% на саите есть вебхуки, которые отдадут эту информауию без рендеринга и в удобном json формате. В 90% случаев для обхода защиты хука достаточно базовых знании как работае веб. Наити хуки можно в тех же devtools на вкладке network, для облегчения можно фильтр fetch/xhr применить.

Selenium - это инструмент эмуляции а не парсинга.
Правильно выбраите инструменты , тренируите вашего змея и да прибудет с вами сила

Аригато, сенсей! Но bs4 в рендер не умеет, на сколько знаю, только в связке с чем-то. С вебхуками в некоторых современных ресурсах тоже не всё так просто, например в coingecko com. Проще подгрузить страницу целиком.

С bs4 , и в правду могу ошибаться, пользовался им в чистом виде давно, где-то в его документации видел такое упоминание.
Но все-таки, расковырять хук гораздо выгоднее, хоть возможно и дольше. Кроме всего прочего, это может позволить запросить бек кастомным запросом (бывает очень полезно/удобно). Если параметры будут не дико разными с типовыми запросами, то тебя не спалят довольно долго.

Селениум в парсинге, скорее жест отчаяния. Даже неудачное ковыряние хуков, дает понимани общих принципов работы. Поэтому я написал, что в 90% случаев селениум "без труда" заменяем и ненужен, требуется чуть поковырять и посмотреть какая защита у хука и как ее проити/получить аворизацию.
Чем больше практики в ковырянии хуков, тем реже нужен селениум. )))

Абсолютно так. Ковырять хуки- это прекрасно, интересно, и полезно, но не для всех задач годится. Современные разрабы, которые предоставляют платное API своего ресурса, возможность работы с хуками максимально усложняют. Как пример, названный выше ресурс.

А что селениум в парсинге- это жест отчаяния, звучит прикольно)) Но на сколько мне известно, практика широко распространена даже в серьёзных командах, так что позволю не согласиться. Для этого может быть множество причин, не только js, но и получение кукис... Однако, прежде чем доходить до селениума, нужно попробовать всё остальное, так как он и по ресурсам требователен, и скорость работы оставляет желать лучшего. Но в связке с другими инструментами он всё же необходим, по моему скромному мнению.

Sign up to leave a comment.

Articles