Парсинг сайтов на Python: как использовать прокси и менять User-Agent

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 พ.ย. 2024

ความคิดเห็น • 119

  • @АлексейБогушевич-щ1ъ
    @АлексейБогушевич-щ1ъ 5 ปีที่แล้ว +27

    Большое спасибо за материал!!!!
    На мой взгляд, один из лучших каналов по Python.
    Так держать!!!!!!

    • @zaemiel
      @zaemiel  5 ปีที่แล้ว +5

      спасибо

    • @deep.flight
      @deep.flight 6 หลายเดือนก่อน

      ​@@zaemielСкажите пожалуйста, я слышал что инстаграм так парсить не получится - из-за юзер агента блокируют акк (хотя вк например работает нормально). Может быть есть какая-нибудь альтернатива?

  • @faStwOw4ik
    @faStwOw4ik 7 ปีที่แล้ว +15

    Очень классная серия видеоуроков, спасибо. Нигде не видел на ютюбе, да и в интернете не нашел, как обходить защиту на сайтах, использующих Cloudfire (при заходе на сайт пишется "идет проверка вашего браузера, подождите 5 секунд", а затем редиректит. Если запишите видеоурок, будет просто замечательно :)

    • @TheDrazzzeR
      @TheDrazzzeR 7 ปีที่แล้ว +2

      Дело в том, что для этого и ставят эту защиту чтобы ее не обошли)

    • @idontknow_
      @idontknow_ 4 ปีที่แล้ว +2

      Такая защита обходится Selenium'ом ну или Puppeteer

  • @Ilushkoo123
    @Ilushkoo123 6 ปีที่แล้ว +2

    🔥🔥🔥
    Хочу весь интернет теперь спаристь))))
    Спасибо все максимально понятно!
    🔥🔥🔥

  • @darkmatiz
    @darkmatiz 7 ปีที่แล้ว +3

    Большое спасибо за ваши видео уроки. очень сильно помогло в работе, необходимы были определенные парсеры (алексы ранга например).
    Еще очень интересно было бы послушать\посмотреть ваш урок по веб спайдерам. на ютубе есть хорошие ролики ангоязычные, но они и для питона 2+ версий, там новичкам сложно приходится переписывать всё под третий :)

  • @SenichevAlexey
    @SenichevAlexey 7 ปีที่แล้ว +6

    Олег, спасибо за полезный контент. Сделай, плиз, обзор работы с капчей ;)

    • @cucci7902
      @cucci7902 3 ปีที่แล้ว

      Ты что хочешь ддосить сайты?

  • @AlexNirt12
    @AlexNirt12 5 ปีที่แล้ว +2

    Спасибо за такое годное видео, пишу спустя два года))

    • @Fleshgod
      @Fleshgod 5 ปีที่แล้ว +1

      Всем все равно когда ты пишешь...

  • @Loony666Noob
    @Loony666Noob ปีที่แล้ว

    Спасибо! Помогло! 🔥

  • @kirillv6255
    @kirillv6255 5 ปีที่แล้ว +23

    Для того чтобы менять User-agent можно использовать вот это fake-useragent.
    Установка: pip install fake-useragent
    from fake_useragent import UserAgent
    ua = UserAgent()
    ua.ie
    # Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)
    ua.random
    # and the best one, random via real world browser usage statistic

  • @HiStOrIaN1990
    @HiStOrIaN1990 4 ปีที่แล้ว

    Спасибо большое. Пока реально крутые уроки.

  • @andreycreewlees1528
    @andreycreewlees1528 3 ปีที่แล้ว

    спасибо как раз для новачков

  • @dmytro1774
    @dmytro1774 5 ปีที่แล้ว +1

    Очень интересно о работе с POST запросами. Можно видеоурок?

  • @devZu9
    @devZu9 7 ปีที่แล้ว +1

    Просто бомба информация, осталось ещё показать как сохранить и потом подставить cookie авторизации.

  • @deverloperfantom1372
    @deverloperfantom1372 5 ปีที่แล้ว +1

    спасибо за видео, лайк

  • @tihon4979
    @tihon4979 5 ปีที่แล้ว

    Очень интересно, спасибо!
    Можно это дело ещё в pool завернуть и получим многопоточность, и при этом беспалевность. 👍

  • @dimannish1
    @dimannish1 2 ปีที่แล้ว

    Спасибо за то, что разложили по полочкам. Всё предельно ясно, только вот у меня IP мой не меняется на предлагаемые. Эти прокси порверил. Все рабочие. Очень странно. Меняются только user-agent....
    Программные VPN все повыключал, сижу только с работающим Касперским. Не знаю, уж может он как-то препятствует?
    UPD: разобрался. Работает только c httpS-ными прокси. Непонятно тогда, для чего http-шные нужны.

  • @EVANSexp
    @EVANSexp 4 ปีที่แล้ว +1

    Не подставляет юзер-агента. print списка useragents работает, так же как и вызов по индексу из списка, но в хедерс почему-то не передается. Уже три раза проверил код - ничего не вижу - все как у вас... Прям вот интересно в чем проблема-то)
    *UPD:*
    4 часа ушло на то, что бы понять, что в main() сначала объявляется useragents, а за ним сразу proxies, но никак не наоборот 😑.

  • @dmitrybe8507
    @dmitrybe8507 5 ปีที่แล้ว

    Отличный видос, спасибо! Но вопрос: как теперь интегрировать этот код в парсер?

  • @BumChigaBum
    @BumChigaBum 7 ปีที่แล้ว

    Как думаешь а zennoposter не лучше будет? Там вроде проще будет парсить и всякие Фичи делать? я в смысле почему выбирать питон.. в этой области..

    • @vkeycaps
      @vkeycaps 7 ปีที่แล้ว

      Наверное главным плюсом будет скорость. Не знаю как зенка, но в аналогичной проге проходимость 800 страниц в час(в лучшем случае) и процессы хавают побольше.

  • @SerhiiNesterov
    @SerhiiNesterov 3 ปีที่แล้ว

    спасибо

  • @ИгнатМирзализадэ
    @ИгнатМирзализадэ 3 ปีที่แล้ว

    А дааальше? ) Просто подменяю адрес и юзерагент на новые в гет запросе что ли?

  • @Sakoru2
    @Sakoru2 6 ปีที่แล้ว

    А есть смысл избежания бана и капчи проходить по урлам, например, wget'ом и потом парсить получившийся html -текст? Так понимаю в этом случае будет меньше коннектов к сайту-донору.

    • @zaemiel
      @zaemiel  6 ปีที่แล้ว

      Попробуйте, но на мой взгляд смысла особого нет. Точнее нет принципиальной разницы.

  • @rezo4846
    @rezo4846 4 ปีที่แล้ว +1

    у меня не получается зайти на сайт, скиньте пожалуйста код

  • @pro100_igor
    @pro100_igor 7 ปีที่แล้ว

    Спасибо автору за его работу. Однозначно продолжай.
    А теперь по делу :)
    При попытке повторить урок почему-то суп не принимает в качестве парсера lxml :(
    Меняем парсер на html.parser - всё пучком. Почему так происходит, подскажите люди добрые. А чем эти парсеры вообще отличаются?
    И User-Agent можно было получить по 'басяцки' типа:
    soup.find('div', class_='ip-block').find_all('span')[1].text.strip()

    • @zaemiel
      @zaemiel  7 ปีที่แล้ว

      Можно только гадать.
      Установлен ли у вас lxml? Проверьте: pip freeze
      Если нет - лучше установить: pip install lxml
      Если установлен, то что пишет суп?

    • @pro100_igor
      @pro100_igor 7 ปีที่แล้ว

      Полностью моя вина :(
      Не установлен был lxml. Как же всё просто, до безобразия.
      Спасибо за ответ.

    • @zaemiel
      @zaemiel  7 ปีที่แล้ว

      Бывает... все мы тупим время от времени - обычное дело

  • @sergei-fil
    @sergei-fil 7 ปีที่แล้ว +1

    Начну с небольшого вопроса. Что делать со страницами которые провалились в блоке try? Допустим нам нужно получить 10 страниц, а получили всего 7, что делать? А так большое спасибо за уроки! Очень помогают!

    • @zaemiel
      @zaemiel  7 ปีที่แล้ว +3

      я бы попытался выяснить почему проваливаются try
      И попробовал бы записать эти страницы, скажем, в текстовый файлик или в json, потом проанализировал и запустил бы их парсинг еще раз

  • @ВалентинКомаров-к2п
    @ВалентинКомаров-к2п 4 ปีที่แล้ว +1

    Подскажите пожалуйста, делаю по вашему уроку все, но возвращает все равно мой ip перепробовал много прокси, помогите

    • @zaemiel
      @zaemiel  4 ปีที่แล้ว +2

      протокол прокси должен совпадать с протоколом сайта:
      http - http
      https - https
      Он не сможет установить SSL соединение с сервером, который его не поддерживает.
      Либо ищите, что вы сделали не так в коде.

    • @ВалентинКомаров-к2п
      @ВалентинКомаров-к2п 4 ปีที่แล้ว

      @@zaemiel все совпадает, проверял несколько раз, все равно не работает, и пробовал другие сайты, ее зна

    • @ВалентинКомаров-к2п
      @ВалентинКомаров-к2п 4 ปีที่แล้ว

      И перепробовал много прокси разных

    • @ВалентинКомаров-к2п
      @ВалентинКомаров-к2п 4 ปีที่แล้ว

      @@zaemiel уже опять пересмотрел , все правильно в коде но все равно возвращает мой ip

    • @ВалентинКомаров-к2п
      @ВалентинКомаров-к2п 4 ปีที่แล้ว

      @@zaemiel Вот код , что может быть не правильно? pastebin.com/m6CrU0At

  • @NONE-ei6ss
    @NONE-ei6ss 4 ปีที่แล้ว

    Если будет Парсинг раз в 5 секунд не будут банить?(Алиэкспресс)

  • @deverloperfantom1372
    @deverloperfantom1372 5 ปีที่แล้ว

    капчи боятся в лес не ходить, не когда не бойся капчи

  • @nikolagir6729
    @nikolagir6729 7 ปีที่แล้ว +1

    Идет полный провал..Только заход в def get_html и не выходит из нее.Подскажите что делать?

    • @TarasMaliarchuk-o4d
      @TarasMaliarchuk-o4d 4 ปีที่แล้ว

      писать на селениуме - bf4 то еще дерьмо (в очень редких случаях можно использовать его вместо селениума)

  • @petrovrf
    @petrovrf 3 ปีที่แล้ว

    @Олег Молчанов
    Приветствую, Олег! Блин, огромное спасибо 🙏 Вам за этот видос - очень четенько все объяснили и показали!
    У меня есть вопрос:
    В интернете я нашел много разных Proxy IP бесплатных, но не все из них доступны - не отвечают и кончается таймаут.
    Поэтому, прежде, чем использовать конкретный Proxy IP на парсируемом сайте, я написал код, который проверяет доступность этого Proxy IP на sitespy.ru/my-ip.
    НО! Сайт, который я хочу спарсить использует протокол https, а sitespy.ru использует протокол http.
    Я прочел все комменты под этим видосом - там Вы пишите, что протокол прокси должен совпадать с протоколом сайта http - http, а https - https
    Получается, нет смысла мне проверять доступность Proxy IP http на sitespy.ru, т.к. даже если на sitespy.ru прокси сработает, то на парсируемом сайте с протоколом https - не сработает , правильно понимаю?
    1️⃣Можете посоветовать, где я мог бы проверить Proxy IP с протоколом https, какой-нибудь сервис без супер антибот защиты, как у yandex.ru/internet, который и разрешение экрана проверяет, кукис и прочее.
    и 2️⃣ совпадение работает в обе стороны? т.е. Proxy IP с протоколом https - будет ли работать с сайтом, у которого протокол просто http (без S)
    Очень жду ответа, заранее спасибо большое!

  • @deverloperfantom1372
    @deverloperfantom1372 5 ปีที่แล้ว +2

    досмотрел... делается за 3 минуты мурыжил мурыжил... в итоге что?? прокси подставил.

  • @kamolrahimov117
    @kamolrahimov117 6 ปีที่แล้ว +1

    Подскажите пожалуйста - что делать если классы\id одинаковые во многих блоках, но данные содержащиеся в них разные..
    Как достать к примеру пятый по счету класс, который везде одинаковый?

    • @ukrainian333
      @ukrainian333 5 ปีที่แล้ว

      Классы и присваиваются для того чтобы блоки с разным содержимым выглядели одинаково, и не приходилось писать одинаковый код для каждого (я о CSS). В таких случаях нужно искать дочерние элементы, удовлетворяющие ваши требования

    • @vadimsmoke
      @vadimsmoke 5 ปีที่แล้ว

      .findAll(class_='name')[5]

  • @toxic_not9447
    @toxic_not9447 3 ปีที่แล้ว

    Не помогло , все также выдает : infoblock action-description invisible . Your browser cannot be verified automatically, please confirm you are not a robot.

  • @TailsFinance777
    @TailsFinance777 3 ปีที่แล้ว

    Спасибо. А то ноль в питон только немного C++ знаю. Есть идея написать ютуб парсер через прокси. Мм вкусно же будет топ теги + накрутка.

    • @TailsFinance777
      @TailsFinance777 3 ปีที่แล้ว

      Серьезно??? компилятор ругался на soup = BeautifulSoup(html,'lxml'); а нужно soup = BeautifulSoup(html, 'lxml'). Ну и синтаксис конечно у питона дикий

    • @timurrakhmanov919
      @timurrakhmanov919 2 ปีที่แล้ว

      @@TailsFinance777 ctrl + alt + L и будет тебе pep8, чтоб он не ругался

  • @СергеичСергеич-с3ш
    @СергеичСергеич-с3ш 6 ปีที่แล้ว

    При использовании прокси и юзер агента, всё равно периодически прилетает бан. С чем это связанно?

    • @zaemiel
      @zaemiel  6 ปีที่แล้ว

      это может быть связано со многими факторами - скоростью запросов, количеством запросов, поддерживается ли JS и т.д.

    • @imrankurbanov3479
      @imrankurbanov3479 5 ปีที่แล้ว

      @@zaemiel
      При не поддерживании JS что нужно тогда делать?

  • @esthetik_life
    @esthetik_life 6 ปีที่แล้ว

    а как сервер при таком запросе видит разрешение экрана? можем ли мы передавать определенное разрешение ?

    • @zaemiel
      @zaemiel  6 ปีที่แล้ว

      никак. Это не браузер.
      И для чего вам передавать разрешение?

    • @esthetik_life
      @esthetik_life 6 ปีที่แล้ว

      как мне кажется, то запрос который не передает разрешение экрана является ботом, если я не прав поправьте меня.

    • @zaemiel
      @zaemiel  6 ปีที่แล้ว

      а о чем вы думаете здесь идет речь? Парсеры - это роботы, с определенной задачей. Да, это боты.
      И не имеет значения будет ли это программируемый браузер Selenium или такой вот простой парсер. Все это боты, т.к. не люди.
      Разрешение экрана - это не единственный признак бота.

    • @esthetik_life
      @esthetik_life 6 ปีที่แล้ว

      хм. Я просто думал если мы передадим аргумент useragent то мы уже будем менее похожи на бота ... Но в целом я вас понял. Спасибо за информацию !

  • @NashirLUTIAN-tw9nk
    @NashirLUTIAN-tw9nk ปีที่แล้ว

    Avotaiya

  • @hronorog
    @hronorog 7 ปีที่แล้ว

    Почему сайт должен показывать капчу? Ведь вы обращаетесь к нему всего лишь один раз.
    Каждый раз с новым айпишником и юзер-агентом, то есть для сайта это всегда левые люди, никак не связанные между собой.

    • @zaemiel
      @zaemiel  7 ปีที่แล้ว

      то, как работает тот или иной сайт вам придется разбираться на практике. У всех по-разному. В отрыве от практики то, что вы написали - это гипотеза, которую еще нужно проверять.
      Но вообще смысл этого видео и сводился к этому - "не хочешь получить каптчу - меняй IP". Так, что я ваш вопрос не совсем понял.

    • @hronorog
      @hronorog 7 ปีที่แล้ว

      на 43:20 вы говорите, что при использовании слипа даже гугл не будет показывать капчу. Поэтому я задал вопрос, почему он должен показать капчу, если по сути это единственный запрос от пользователя. И пусть их будет по 40 запросов в секунду, это все равно будет 40 разных пользователей для сайта, ведь мы используем разные прокси и хедеры.

    • @zaemiel
      @zaemiel  7 ปีที่แล้ว

      А где вы в первом сообщении написали про Гугл?
      Попробуйте попарсить Гугл без использования прокси, юзер-агентов и без задержек - получите каптчу очень быстро. Именно поэтому их и используют.
      Вы немного путаете причину и следствие.
      Мы используем прокси и все остальное, чтобы сайты (включая Гугл) думали, что мы разные пользователи, иначе получаем каптчу.
      Если никакой защиты от роботов у сайта нет, то нет необходимости использовать прокси.

    • @hronorog
      @hronorog 7 ปีที่แล้ว

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

    • @zaemiel
      @zaemiel  7 ปีที่แล้ว

      а разве это не суть использования прокси?
      Зачем по-вашему я записал этот скринкаст?
      Я не вижу противоречия между тем, что говорил тогда и тем, что писал сегодня.
      Это абсолютно бессмысленный разговор.

  • @alexanderpadalka5708
    @alexanderpadalka5708 3 ปีที่แล้ว

  • @deverloperfantom1372
    @deverloperfantom1372 5 ปีที่แล้ว

    есть непобедимая капча, для этого делается или метод на сторону отправка за копейки школотой ввод, или банальный перебор капчи, я 20 мин смотрел видос

  • @JohnSmith-ok1vi
    @JohnSmith-ok1vi 6 ปีที่แล้ว +2

    curl ident.me

  • @densaface
    @densaface 2 ปีที่แล้ว

    Большое спасибо за удаление комментария с чисто техническим вопросом, дизлайк, отписка.

    • @zaemiel
      @zaemiel  2 ปีที่แล้ว

      никто ваш коммент не удалял.
      Вероятно, это сделал сам TH-cam.
      Такое раньше уже было в серии про использование mock'ов

    • @densaface
      @densaface 2 ปีที่แล้ว

      @@zaemiel упс, тогда сорри, погорячился) вернул лайк и подписку) спрашивал про то что указанный сайт (а, видимо его ютуб из-за внешней ссылки потер), спрячь мою попу, который) сейчас у него нет списка бесплатных прокси? я на нем зарегался и по ссылке в видео прошел, там такая страница не доступна

    • @zaemiel
      @zaemiel  2 ปีที่แล้ว

      видимо, они (hidemyass) концепцию поменяли, и вам нужны другие прокси.

    • @densaface
      @densaface 2 ปีที่แล้ว

      @@zaemiel ну да, купил какие то, тестирую. Мне интересно, не те же ли это бесплатные)

    • @zaemiel
      @zaemiel  2 ปีที่แล้ว

      вполне возможно

  • @ДиванныйЭксперд
    @ДиванныйЭксперд 5 ปีที่แล้ว

    Смешно звучит, когда русский начинает пытаться по англицки балакать =) Можно просто как есть? =) (не критика) =)

    • @zaemiel
      @zaemiel  5 ปีที่แล้ว +3

      Я не пытаюсь. Нет.

    • @ДиванныйЭксперд
      @ДиванныйЭксперд 5 ปีที่แล้ว

      @@zaemiel может слишком грубым мое сообщение показалось =)
      приношу извинения =)

  • @deverloperfantom1372
    @deverloperfantom1372 5 ปีที่แล้ว

    на сколько же кончиный язык питон

  • @NashirLUTIAN-tw9nk
    @NashirLUTIAN-tw9nk ปีที่แล้ว

    Avotaiya