Обход защиты от парсинга на PHP
Если вы будете парсить более-менее серьезные сайты — вы можете столкнутся с защитой от парсинга. Например, если парсить какой-то сайт достаточно длительное время и слать запросы к нему очень часто — этот сайт может вас заблокировать по ip и выдать капчу.
Основной принцип обхода защиты от парсинга — ваш парсер должен вести себя так, как вел бы себя человек, зашедший на сайт. В следующих уроках мы будем разбирать основные приемы.
Трепачёв Дмитрий © 2012-2024
t.me/trepachev_dmitry
Как обойти блокировки сайтов при парсинге?
В настоящее время многие компании используют парсинг, чтобы получить множество различных преимуществ. Независимо от того, находитесь ли вы в сфере онлайн-торговли и хотите стать более конкурентоспособными, или вы хотите предоставлять услуги другим компаниям, сбор данных может стать способом увеличения прибыли однозначно в каждом случае.
К сожалению, многие компании даже имея в штате программистов или системных администраторов не рассматривают самостоятельный парсинг как очень желанный вид деятельности. Последовательная отправка большого количества запросов на ресурсы может заблокировать работу, что неизбежно приведет к приостановке деятельности по сбору данных.
Если вы хотите узнать больше о том, как и почему это происходит, и узнать, как обойти блокировки, вы находитесь на правильном пути.
Парсинг товаров: проблемы блокировки
Понимание того, как обойти блокировки в процессе парсинга , имеет решающее значение для успеха. Парсинг данных — это не то, к чему вы должны относиться легкомысленно, поскольку на пути действительно возникнет много проблем, которые необходимо решать последовательно, а думать о них заранее. Если вы запустите проект по сборку данных, не зная, как обойти блокировки, вы рискуете быстро зайти в тупик. Особенно это относится к крупным сайтам электронной коммерции из-за объема данных, которые вам необходимо получить. Таким образом, опытные парсеры понимают, что в любом проекте по сбору данных есть несколько общих проблем.
Структура сайта не установлена в самом начале
Макеты сайтов постоянно меняются. Эти изменения помогают им оптимизировать взаимодействие с пользователем, привлечь больше клиентов и увеличить продажи. Если структура целевого сайта изменяется , скрипты или плагины подготовленные для парсинга не могут выполнить автоматическую перенастройку, и парсер может дать сбой или вернуть неполный набор данных . И то, и другое фатально для вашей операции по сбору данных.
Недостаточно места для хранения полученных данных
Масштабная операция по сбору данных обеспечивает внушительные результаты. Тем не менее, результаты — это большие куски данных, которые вам нужно где-то хранить. Есть две проблемы, связанные с емкостью хранения: может быть недостаточно для хранения собранных данных объема хранилища или инфраструктура данных может быть плохо проанализирована, что делает экспорт слишком неэффективным. Плохое управление данными может привести к критическим проблемам , прежде чем вы начнете беспокоиться о том, как обойти блокировки.
Поддержание качества данных
Целостность данных может быть легко нарушена во время самого процесса сбора информации. Таким образом, проверка первых полученных данных становится обязательной и предварительной частью любого проекта по парсингу. Вам нужно будет установить четкие параметры по качеству данных. После этого проверка данных может быть инициирована путем создания правил, обеспечивающих соответствие полученной информации требованиям по качеству.
Анти-парсер технологии и враждебная среда
Электронная коммерция — прибыльная отрасль. Таким образом, многие интернет-магазины тратят много денежных средств на то, чтобы держать ботов, включая различные сканеры по отлову всяких нежелательных элементов на сайте. Чтобы сделать это, они внедряют различные технологии защиты от копирования данных, которые варьируются от CAPTCHA и reCAPTCHA и прочих возможных вариантов блокировок. Поэтому понимание того, как парсить сайт без блокировки, становится важной частью любой операции по сбору данных.
В любом случае, если сайт распознает автоматические запросы, ваш IP может быть заблокирован на пару дней или даже заблокирован навсегда. Это особенно неудобно для тех, кто использует статические IP-адреса. Поэтому покупка и использование прокси адресов становится неотъемлемой частью любого проекта.
Что такое враждебная среда?
Враждебное среда или окружение относится к технологиям Javascript и Ajax, которые сильно затрудняют парсинг. Определенные элементы, которые содержат важную информацию, могут быть просто недоступны для многих парсеров, которые вы найдете бесплатно. Поэтому специфические обходные пути или сценарии должны быть обязательно реализованы дополнительно для доступа к этим данным.
Парсинг сайтов может заблокировать вас
В то время как для некоторых начинающих блокирование их сайтами может быть слишком знакомым, для новичков это может иметь серьезные последствия. Без правильной настройки и отраслевых знаний каждый заблокированный IP будет чрезвычайно дорогостоящим. Поэтому выяснение того, как сайты блокируют ботов и как обходить блокировки, является первым шагом для любого новичка.
Почему сайты блокируют ботов?
Боты, которые используются вами без понимания того, как сканировать сайты без блокировки, часто мгновенно блокируются. Увеличение посещаемости сайта за счет ботов во время парсинга выглядит безобидно. Тем не менее, боты могут отправлять значительно больше запросов в секунду, чем обычный пользователь, и сильно нагружать серверы, на которых размещается сайт. Если он пересекает определенный порог, сайт может стать слишком медленным или полностью отключиться.
Для многих сайт — это всего лишь одна ссылка в цепочке, приносящей доход. Боты-парсеры и различные сканеры могут отправлять слишком много запросов и подвергать серверы такой нагрузке, что это может привести к закрытию сайта. Даже небольшие задержки могут стоить потенциального дохода от клиентов, поскольку такой расклад ни одного пользователя не устроит, дальше они могут просто закрыть этот сайт и купить желаемый продукт у конкурента. Таким образом, многие сайты используют технологии предотвращения парсингу, чтобы избежать любых возможных замедлений, которые могут вызвать боты.
Как сайты распознают ботов?
Существуют различные алгоритмы и спецификации, которые различают пользователей и пользователей-ботов. Мы также упомянули CAPTCHA и reCAPTCHA как самые популярные антибот-технологии. Выпущена новая версия reCAPTCHA 3, и она еще более эффективна при обнаружении ботов . Таким образом, понимание того, как обходить блокировки, становится все более важным, так как частота запретов может увеличиться и та же капча может выстреливать при каждом запросе данных, представляете как вы обрадуетесь?
Другие решения могут отслеживать количество запросов с одного IP-адреса. Особенно это актуально при периодическом мониторинге цен .Также есть анализаторы, которые могут сопоставить местоположение вашего IP-адреса с языком и часовым поясом и обнаружить несоответствия.
Все эти технологии создают сеть безопасности, и они работают 24/7. Обход этих ограничений во многом является преимущественным. Разблокировка определенного IP-адреса практически невозможна, поэтому лучше не блокировать его.
Как обойти блокировки при парсинге?
Блокировок можно избежать, если понять, как сайты защищают себя. Существуют очень специфические методы и технологии, которые могут помочь вам собрать данные с крупных маркетплейсов например, не забанив их, не заблокировав и даже не обнаружив за использованием парсеров.
Ознакомьтесь с политикой сайта (если таковая имеется на сайте)
Крупные сайты позволяют в некоторой степени сбор данных. Чтобы не выходить за пределы, вы должны сделать две вещи: проверить официальную Политику сайта в области сбора данных, если таковая имеется на сайте, и просмотреть файл robots.txt на сайте (это делается как правило через слеш после адреса — www.site-donor.ru/ROBOTS.TXT ). В robots.txt вы сможете увидеть, что вам разрешено собирать (закрытые страницы будут помечены). Пребывание в согласованных пределах значительно уменьшит или даже полностью исключит возможность блокировки вашего парсера.
Работайте с надежным прокси-провайдером
Прокси-серверы являются основным инструментом для обхода блокировок на сайте. Если вы решите использовать прокси-серверы для получения данных от более сложных сайтов, обязательно выберите надежного прокси-провайдера. Лучшие провайдеры используют первоклассную ИТ-инфраструктуру, технологии безопасности и шифрования для обеспечения постоянной пропускной способности и времени безотказной работы. Любое время простоя прокси-серверов вызывает проблемы и задержки, отнеситесь к этом серьезно. Очень подробно о прокси рассказано в нашей статье .
Кроме того, с надежным поставщиком прокси вы получите доступ к поддержке клиентов и получите профессиональную помощь при внедрении прокси в повседневных операциях по парсингу. Это может оказаться очень полезным, когда вы хотите повысить или понизить свою деятельность, избегая при этом риска блокировки сайтами.
Кроме того, хорошие прокси-провайдеры должны поддерживать такие функции, как фиксированные записи портов, управление временем сеанса и широкий спектр возможных местоположений. Определенный контент может отображаться только в определенных регионах или странах (например, США). В этом случае использование прокси-сервера США позволит собирать любое содержимое данных.
Использовать реальных пользовательских агентов
Интернет-магазины размещаются на серверах, и эти серверы становятся умнее с каждым днем. Серверы теперь могут анализировать заголовок HTTP-запроса, сделанного вашими ботами. Этот заголовок, называемый пользовательским агентом, содержит различную информацию от ОС и программного обеспечения до типа приложения и его версии.
Серверы могут обнаруживать подозрительные пользовательские агенты
Чтобы избежать блокировки, вы всегда должны использовать реальных пользовательских агентов. Реальные пользовательские агенты содержат популярные конфигурации HTTP-запросов, которые отправляются реальными посетителями. Кроме того, рекомендуется ротация пользовательских агентов путем разработки большого набора жизнеспособных вариантов. Если пользовательские агенты не перебираются автоматически сменяя друг друга с каждым запросом, сайты могут обнаружить, что большая часть входящего трафика (массы запросов) подозрительно похожа, и, по крайней мере, временно заблокировать определенный набор пользовательских агентов.
Используемые пользовательские агенты обычно прописываются прокси-провайдером. Не забывайте проверять технические характеристики прокси-серверов, чтобы убедиться, что они соответствуют вашим требованиям.
Веб-скрапинг без блокировки
Руководство про парсинг сайтов без блокировки. Узнайте о 9 различных решениях для защиты веб-сайта от блокировки.
3 min read
Michael Nyamande
Процесс веб-скрапинга часто может напоминать охоту за сокровищами, когда вы исследуете Интернет в поисках скрытой информации, которая не предоставляется API. И, как и в любой хорошей охоте за сокровищами, здесь есть трудности, которые нужно преодолеть.
Одним из явных препятствий являются блокировки доступа, установленные целевым веб-сайтом. Они могут возникать по разным причинам, например, из-за строгих политик парсинга, опасений, связанных со злоупотреблением ресурсами, проблемами с репутацией исходного IP-адреса или обнаружением (поддельных) пользовательских агентов.
Наше руководство научит вас парсить веб-страницы без блокировки целевым сайтом, чтобы вы могли легко найти свое сокровище в Интернете.
Стратегии, которые помогут вам избежать блокировки доступа
Поскольку веб-скрапинг — это сложная задача, обход блокировок требует использования нескольких методов. Ниже мы рассказали 9 стратегий, которые вы можете использовать, чтобы обойти эти надоедливые блокировки.
1. Поймите политику и условия обслуживания вашей цели
Когда вы начинаете парсить новый сайт, вам нужно ознакомиться с ним, а не просто изучить HTML-структуру страницы. Ознакомление должно включать понимание политики и условий обслуживания сайта, который вы собираетесь парсить. Это часто включает в себя позицию сайта по отношению к веб-скрапингу, разрешен ли парсинг и какие конкретные страницы вам разрешено парсить. Несоблюдение этих условий может привести к блокировке сайта и потенциальному юридическому риску.
Одним из важных документов, о котором следует знать, является файл robots.txt Этот файл находится в корневом каталоге сайта и содержит инструкции для веб-роботов, в которых указывается, какие части сайта нельзя сканировать или обрабатывать.
Ниже мы привели пример файла robots.txt :
User-agent: * Disallow: /private/ Disallow: /temp/
Здесь файл robots.txt говорит всем роботам (обозначаемым * после User-agent ) не парсить личные и временные каталоги веб-сайта.
Уважительный веб-скрапинг подразумевает соблюдение правил конкретного сайта.
2. Соблюдайте этические стандарты парсинга
Помимо политики веб-сайта, вам следует придерживаться кодекса поведения. Этические стандарты парсинга помогут вам избежать блокировки и проявить уважение по отношению к правам и ресурсам вашего целевого сайта.
Соблюдение этих рекомендаций крайне важно:
- Не бомбардируйте серверы постоянными запросами. Делайте достаточные временные промежутки между ними. Некоторые сайты могут обнаруживать и блокировать парсеры, которые быстро извлекают большие объемы данных, потому что это не похоже на поведение человека. Чтобы выглядеть более естественно и снизить вероятность блокировки, рекомендуется добавлять временную задержку к запросам. Однако вместо фиксированной временной задержки лучше использовать нерегулярные интервалы, чтобы более точно имитировать поведение человека.
- Не собирайте личные данные без согласия. Это не только этический, но и зачастую юридический вопрос. Убедитесь, что у вас есть необходимые разрешения, прежде чем парсить личные данные.
- Уважайте данные, которые вы получаете. Используйте данные, которые вы собираете, ответственно и законно. Убедитесь, что вы делаете это в соответствии со всеми применимыми законами и правилами, такими как законы об авторском праве и Общий регламент по защите данных (GDPR).
Ниже мы показали, как вы можете создать нерегулярные интервалы между запросами в Python:
import time import random urls = ['https://www.targetwebsite.com/page1', 'https://www.targetwebsite.com/page2', 'https://www.targetwebsite.com/page3'] for url in urls: response = requests.get(url) # Process response sleep_time = random.uniform(1, 10) # Generate a random sleep time between 1 and 10 seconds time.sleep(sleep_time) # Sleep for a random time between requests
Этот код циклически просматривает список urls -адресов в массиве urls. Для каждого URL он делает запрос на его получение, а затем приостанавливается, используя функцию time.sleep() , прежде чем перейти к следующему запросу. Эти случайные интервалы помогают имитировать поведение человека в Интернете, снижая вероятность обнаружения.
3. Используйте (вращающиеся) прокси
Полезным инструментом для веб-скрапинга являются прокси, особенно ротационные. Прокси служит шлюзом между вами и сайтом, который вы парсите. Он маскирует ваш IP-адрес, создавая впечатление, что ваши запросы поступают из разных мест.
Ротационные прокси делают еще один шаг вперед. Вместо того чтобы использовать один IP, они предоставляют вам пул IP-адресов. Ваши запросы проходят через них, постоянно меняя ваш цифровой облик. Это значительно снижает вероятность того, что ваш парсер будет обнаружен и заблокирован, поскольку сайту гораздо сложнее выявить закономерности в запросах.
Кроме того, вращающиеся прокси помогают распределять ваши запросы по нескольким IP-адресам, снижая риск того, что один из них будет заблокирован из-за слишком большого количества запросов.
Посмотрите ниже на фрагмент кода, который поможет вам запустить ротацию прокси в Python:
import requests from itertools import cycle # List of proxies proxy_list = ['ip1:port1', 'ip2:port2', . ] proxy_pool = cycle(proxy_list) # create a cycle of proxies url = 'https://www.targetwebsite.com' for i in range(1,3): # Get a proxy from the pool proxy = next(proxy_pool) print(f"Request #:") try: response = requests.get(url, proxies=) print(response.content) except: # Most free proxies will often get connection errors, so we catch them here print("Connection error with proxy:", proxy)
В этом фрагменте кода используется список прокси (т. е. ie proxy_list ), который циклически повторяется, поэтому каждый выполняемый запрос имеет другой IP-адрес. Из-за этого сайтам сложнее обнаружить ваши операции парсинга.
Вращающиеся прокси — мощный инструмент. Однако они должны стать частью более крупной стратегии. Чтобы перемещаться по беспокойному морю веб-скрапинга и не быть заблокированным, вы должны комбинировать их с другими методами, о которых мы рассказали в этой статье.
4. Используйте правильные заголовки и пользовательские агенты
Веб-сайты часто используют заголовки и пользовательские агенты для обнаружения ботов. User-Agent — это заголовок, его ваш браузер отправляет на сервер с подробной информацией о ПО и системе, от которой идет запрос. Обычно он включает тип приложения, ОС, поставщика и версию ПО. Эта информация помогает серверу предоставлять контент, подходящий для конкретного браузера и системы.
При парсинге крайне важно использовать легитимные строки пользовательского агента. Имитируя реального пользователя, вы можете эффективно обойти механизмы обнаружения и снизить вероятность блокировки.
Помимо User-Agent , еще одним важным элементом, который следует учитывать, является заголовок Referer . Заголовок Referer показывает URL веб-страницы, которая связана с запрашиваемым ресурсом. Добавление этого заголовка в запросы вашего парсера делает его более похожим на пользователя, переходящего с одной страницы на другую.
Другие полезные заголовки, которые может включать ваш парсер, это Accept-Language , Accept-Encoding и Connection . Они, как правило, отправляются веб-браузерами и редко используются парсерами. Парсеры обычно игнорируют их, потому что они не имеют прямого влияния на поиск веб-контента. Однако их включение помогает сделать запросы парсера более подлинными, что снижает вероятность обнаружения.
Посмотрите на фрагмент Python, который устанавливает User-Agent и Referer в заголовке запроса для имитации настоящего сеанса просмотра:
url = 'https://www.targetwebsite.com' headers = < 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', 'Referer': 'https://www.google.com/' >response = requests.get(url, headers=headers)
5. Решайте ловушки для хакеров и ошибки
Навигация по сайту может быть сложной из-за таких препятствий, как honeypot (ловушки для хакеров). Honeypot — это скрытые ссылки, специально разработанные для того, чтобы оставаться незамеченными обычными пользователями, однако быть обнаруженными парсерами и ботами. Эти ссылки часто скрываются с помощью HTML-элементов, для которых установлено значение hidden или none, или маскируются под кнопки, чей цвет соответствует фону страницы. Основная цель внедрения “медовых точек” – выявление и занесение ботов в черный список.
Посмотрите простой фрагмент кода, который вы можете использовать, чтобы попытаться избежать ловушек в Python:
from bs4 import BeautifulSoup import requests url = 'https://www.targetwebsite.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') for link in soup.select('a'): if 'display' in link.get('style', '') and 'none' in link['style']: continue # Skip this link # Process link
Этот код пропускает любую ссылку с атрибутом code>display: none в атрибуте style, что является общей характеристикой ссылок honeypot.
Еще одна важная вещь, на которую следует обратить внимание при парсинге данных – это ошибки. Поскольку ответы с ошибками возникают нередко. Они часто обозначаются кодами состояния HTTP в диапазоне 4xx (ошибки клиента) или 5xx (ошибки сервера). Чтобы не перегружать сервер чрезмерным количеством запросов, что может привести к блокировке, важно грамотно справляться с этими ошибками.
Одной из эффективных стратегий управления такими ошибками является реализация алгоритма экспоненциального отката. Этот подход предполагает постепенное увеличение интервала времени между последующими повторными попытками, что позволяет более эффективно обрабатывать ошибки.
6. Используйте сервис решения CAPTCHA
Полностью автоматизированный публичный тест Тьюринга для определения различий между компьютерами и людьми (CAPTCHA) — это мера безопасности, применяемая многими веб-сайтами для предотвращения действий автоматизированных ботов, включая парсинг. Они созданы таким образом, чтобы людям было легко их решать, но они были сложными для машин.
Если вы столкнулись с CAPTCHA, вам следует рассмотреть возможность использования Web Unlocker от Bright Data. Наш инструмент использует различные методы, в том числе алгоритмы машинного обучения и даже человеческие решатели для расшифровки CAPTCHA от вашего имени. Его роль заключается в автоматизации процесса решения CAPTCHA, чтобы парсер мог беспрепятственно продолжать процесс извлечения данных.
7. Отслеживайте ограничения скорости и отказы в доступе
Многие сайты устанавливают ограничения скорости и отказы в доступе, чтобы защитить свои ресурсы от использования автоматическими ботами. Каждый запрос, который вы отправляете на сервер, потребляет ресурсы. То есть тысячи ботов, отправляющих запросы ежесекундно, могут легко вывести из строя сервер или снизить производительность сайта. Чтобы предотвратить это, веб-ресурсы устанавливают ограничения скорости, а некоторые даже предоставляют заголовок X-RateLimit-Limit в своих ответах, подробно описывая свои ограничения скорости. Вы должны соблюдать эти ограничения, чтобы избежать блокировки.
Сервер обычно сообщает об этих ограничениях через коды состояния HTTP. Код состояния 200 означает, что все прошло гладко, а код 429 означает, что вы отправили слишком много запросов за определенное время. Аналогично, код 403 означает, что доступ запрещен, а код 503 указывает на недоступность сервера, возможно, из-за перегрузки. Знать эти коды очень важно для навигации по извлечению данных.
Ниже мы показали фрагмент Python, который использует библиотеку запросов для соблюдения ограничений скорости:
import time import requests def respectful_requester(url, delay_interval=1): response = requests.get(url) # If the status code indicates rate limiting, sleep then retry if response.status_code == 429: print('Rate limit reached. Sleeping. ') time.sleep(delay_interval) return respectful_requester(url, delay_interval) elif response.status_code != 200: print(f'Error: . Try a different proxy or user-agent') return response
Эта функция отправляет запрос GET на URL-адрес и проверяет ответ. Если он видит код состояния 429 , то приостанавливается на указанный интервал задержки, а затем снова пытается выполнить запрос. При необходимости вы также можете добавить более сложную обработку для других кодов состояния.
8. Парсите из кеша Google
Для труднодоступных веб-сайтов или данных, не зависящих от времени, есть альтернативный подход – парсинг данных из кэшированной копии сайта Google, а не с самого сайта. Этот метод может быть особенно полезен при работе со сложными веб-ресурсами, которые активно блокируют парсеры. Эти кэшированные страницы можно парсить вместо исходных веб-страниц, чтобы избежать срабатывания каких-либо механизмов защиты от парсинга. Имейте в виду, что этот метод может быть ненадежным, поскольку некоторые сайты просят Google не кэшировать их контент. Кроме того, данные из кеша Google могут быть устаревшими.
Чтобы парсить кэшированную версию сайта , просто добавьте его URL в конец http://webcache.googleusercontent.com/search?q=cache: . Например, если вы хотите выполнить парсинг веб-сайта Bright Data, вы можете использовать следующий URL-адрес: http://webcache.googleusercontent.com/search?q=cache:https://https://brightdata.com/ .
Хотя парсинг кэша Google может быть более надежным, чем парсинг сайта, активно блокирующего ваши запросы, не забывайте учитывать ограничения и проверять релевантность кэшированных данных.
9. Используйте сторонние прокси и сервисы парсинга
По мере того как игра в “кошки-мышки” между парсерами и администраторами сайтов усиливается, возрастает сложность поддержания эффективной и незаметной установки веб-скрапинга. На сайтах появляются новые способы обнаружения, замедления или блокировки парсеров, что требует динамического подхода для преодоления этих средств защиты.
Иногда лучший подход — позволить экспертам справиться с трудными частями. Именно в этом и заключается преимущество сторонних прокси и услуг по борьбе со скрапингом, таких, как Bright Data. Bright Data постоянно предлагает самые актуальные технологии защиты от парсинга, адаптируя свои стратегии, чтобы обойти новые препятствия.
Bright Data предлагает решения, которые помогут вам убедительно имитировать поведение человека, такие как ротация резидентных прокси и автоматическое решение CAPTCHA, что позволит вам парсить сайты незаметно. Услуги также рассчитаны на масштабирование, чтобы помочь вам легко удовлетворять растущие потребности ваших проектов по веб-скрапингу.
Использование этих решений поможет вам сэкономить время и ресурсы. Тем временем вы сможете сосредоточиться на других частях вашего проекта, например, на анализе полученных данных и извлечении из них полезных сведений.
Подведем итоги
На этом этапе вы прошли через коварные преграды на пути парсинга. Понимая политику вашей цели, используя этические стандарты парсинга, применяя такие тактики, как вращающиеся прокси, соответствующие заголовки и User-Agent, а также справляясь с ошибками и honeypot, вы сможете хорошо подготовиться к созданию своих проектов веб-скрапинга без блокировки.
Однако помните, что даже самым опытным исследователям нужен надежный набор инструментов. Здесь приходит на помощь Bright Data. Комплексные решения предлагают широкий спектр услуг, специально разработанных для оптимизации процесса веб-скрапинга. Используйте Web Unlocker для доступа к данным, скрытым за CAPTCHA. Или выберите один из прокси, включая надежные прокси-серверы, серверные и резидентные прокси, чтобы сохранить анонимность.
Как обойти защиту от парсинга?
Этот код должен выводить все, что есть в body. Но похоже у этого сайта какая-то защита от парсинга.
import requests from bs4 import BeautifulSoup URL = 'https://edadeal.ru/kazan' HEADERS = def get_html(url, params=None): r = requests.get(url, headers=HEADERS, params=params) return r def get_content(html): print(BeautifulSoup(html, 'html.parser')) def parse(): html = get_html(URL) if html.status_code == 200: get_content(html.text) else: print('Error') parse()
В результате, всё, что спарсилось от body, это:
Отслеживать
задан 8 дек 2020 в 16:06
3 1 1 серебряный знак 4 4 бронзовых знака
пойти и занести админам сайта.
9 дек 2020 в 8:39
Все верно у Вас спарсилось, защиты тут нет никакой, сами откройте исходный код страницы edadeal.ru/kazan и посмотрите что там. Собственно кроме этого div Вы там в теле ничего и не обнаружите. Что бы парсить такие сайты, нужно понимать как работают сайты, не только статические. Берите fiddler или в режиме разработчика смотрите события сетевые, контент загружается отдельно на этом сайте, уже после загрузки старинцы. Что бы спарсить, нужно понимать что такое ajax хотя бы, а может там вообще что-то другое. Но суть в том что контент подгружается через js отдельно, и нужно смотреть откуда
9 дек 2020 в 8:53
Очень странно, что популярный интернет магазин не сделал ssr. Ибо, то что в блоке только