Отправление в авантюрное путешествие по веб-сканированию может быть одновременно захватывающим и сложным, поскольку человек перемещается по лабиринтам Интернета в поисках ценных данных. В огромной цифровой вселенной искусство сканирования веб-страниц стало важнейшим навыком, позволяющим нам эффективно добывать информацию, развивать идеи и понимать смысл постоянно расширяющейся всемирной паутины.
В этой поучительной статье мы пройдемся по сложной сфере веб-сканирования, раскроем различия между веб-сканированием и веб-скрапингом, а также изучим ряд стратегий и технологий, которые повысят ваше мастерство в веб-сканировании.
От динамичной области веб-сайтов JavaScript до невероятной простоты Python — мы дадим вам множество советов и методов, которые сделают ваше сканирование веб-сайтов плавным, эффективным и беспрепятственным.
Оглавление
Итак, пристегнитесь и приготовьтесь отправиться в захватывающее путешествие в увлекательный мир веб-сканирования!
Веб-сканирование против веб-скрапинга
Хотя часто считается, что парсинг и сканирование веб-страниц — это одно и то же, и оба они используются для интеллектуального анализа данных, у них есть ключевые различия. Мы изучим эти различия и поможем вам определить, какой подход лучше всего соответствует вашим потребностям и бизнес-целям.
Ключевые различия
Проще говоря, сканирование веб-страниц — это то, что делают поисковые системы: они перемещаются по сети в поисках любой доступной информации и переходят по каждой доступной ссылке. Этот общий процесс направлен на сбор как можно большего количества информации (или даже всей) с конкретного веб-сайта. По сути, именно это и делает Google — он просматривает всю веб-страницу и индексирует все доступные данные.
С другой стороны, парсинг веб-страниц используется, когда вы хотите загрузить собранную информацию. Парсинг веб-страниц (также известный как извлечение веб-данных) — более целенаправленный процесс. Настраивая команды и используя прокси-серверы очистки, вы можете извлекать определенные данные с целевого веб-сайта. Впоследствии вы сможете скачать результаты в подходящем формате, например JSON или Excel.
В некоторых случаях и сканирование веб-страниц, и парсинг веб-страниц могут использоваться для достижения одной цели, по существу функционируя как первый и второй этапы вашего процесса. Объединив их, вы можете собирать большие объемы информации с крупных веб-сайтов с помощью сканера, а затем извлекать и загружать конкретные данные, которые вам нужны, с помощью парсера.
4 стратегии веб-сканирования
Как правило, веб-сканеры посещают только часть веб-страниц в зависимости от бюджета сканера, который может определяться такими факторами, как максимальное количество страниц на домен, глубина или продолжительность.
Многие веб-сайты предлагают файл robots.txt, который определяет, какие части сайта можно сканировать, а какие — нет. Кроме того, есть sitemap.xml, который более подробен, чем robots.txt, указывая ботам, какие пути сканировать, и предоставляя дополнительные метаданные для каждого URL.
Обычное использование веб-сканеров включает в себя:
- Поисковые системы, такие как Googlebot, Bingbot и Yandex Bot, собирают HTML из значительной части Интернета, индексируя данные, чтобы их было легко найти.
- Инструменты SEO-аналитики собирают не только HTML, но и метаданные, такие как время ответа и статус ответа, для выявления битых страниц и отслеживания ссылок между доменами для анализа обратных ссылок.
- Инструменты мониторинга цен сканируют веб-сайты электронной коммерции, чтобы найти страницы продуктов и извлечь метаданные, особенно цены. Эти страницы продуктов затем периодически пересматриваются.
- Common Crawl поддерживает общедоступное хранилище данных веб-сканирования, как Архив за май 2022 г. содержащий 3,45 миллиарда веб-страниц.
Как сканировать веб-сайты JavaScript
Сканирование веб-сайтов JavaScript может быть более сложным, чем сканирование статических HTML-страниц, поскольку контент часто загружается и обрабатывается кодом JavaScript. Для сканирования таких веб-сайтов вам необходимо использовать headless-браузер, который может выполнять JavaScript и отображать контент страницы. Одним из популярных вариантов для этой задачи является сочетание библиотеки Puppeteer и среды выполнения Node.js.
Вот пошаговое руководство по сканированию веб-сайтов JavaScript с помощью Puppeteer и Node.js:
1. Установите Node.js
Загрузите и установите последнюю версию Node.js с официального сайта (https://nodejs.org/).
2. Создайте новый каталог проекта.
Создайте новый каталог для своего проекта и перейдите к нему с помощью командной строки.
mkdir js-crawler
cd js-crawler
3. Инициализируйте новый проект Node.js
Запустите следующую команду в каталоге вашего проекта, чтобы создать новый package.json
файл с настройками по умолчанию.
npm init -y
4. Установите Кукловод
Установите Puppeteer, выполнив следующую команду в каталоге вашего проекта.
npm install puppeteer
5. Создайте новый файл JavaScript.
Создайте новый файл с именем
crawler.js
в каталоге вашего проекта, который будет содержать код для сканирования веб-сайта JavaScript.
6. Напишите код сканера
Открыть
crawler.js
и добавьте следующий код:
const puppeteer = require('puppeteer');
async function crawlJavaScriptWebsite(url) {
Запустите новый экземпляр браузера
const browser = await puppeteer.launch({ headless: true });
Создать новую страницу в браузере
const page = await browser.newPage();
Перейдите к целевому URL-адресу
await page.goto(url, { waitUntil: 'networkidle2' })
Извлеките данные со страницы, используя
evaluate()
const data = await page.evaluate(() => {
Напишите здесь свой собственный код JavaScript, чтобы извлечь необходимые вам данные. Например, давайте извлечем все заголовки (элементы h1) со страницы.
const headings = Array.from(document.querySelectorAll('h1')).map(heading => heading.textContent);
return {
headings,
};
});
Закройте браузер
await browser.close();
Вернуть извлеченные данные
return data;
}
Пример использования:
crawlJavaScriptWebsite('https://example.com/')
.then(data => console.log(data))
.catch(err => console.error(err));
Заменить
https://example.com/
URL-адрес целевого веб-сайта и настройте
page.evaluate()
Функция для извлечения необходимых вам данных.
7. Запустите краулер
Выполните следующую команду в каталоге вашего проекта, чтобы запустить искатель:
node crawler.js
Скрипт запустит автономный браузер, перейдет к целевому URL-адресу и выполнит код JavaScript, указанный в
page.evaluate()
функция. Извлеченные данные будут записаны в консоль.
Имейте в виду, что это базовый пример сканирования веб-сайта JavaScript. В более сложных случаях использования вам может потребоваться взаимодействовать со страницей, обрабатывать запросы AJAX, прокручивать страницу или иметь дело с CAPTCHA и файлами cookie.
Как сканировать Интернет с помощью Python
Сканирование веб-сайта с помощью Python включает в себя получение веб-страниц, анализ их содержимого и переход по ссылкам на другие страницы. В этом руководстве мы будем использовать две популярные библиотеки Python: Requests и Beautiful Soup. В этом руководстве предполагается, что у вас установлен Python и вы имеете базовое понимание программирования на Python.
Шаг 1. Установите необходимые библиотеки.
Установите библиотеки Requests и Beautiful Soup с помощью pip:
pip install requests beautifulsoup4
Шаг 2. Импортируйте библиотеки
Импортируйте необходимые библиотеки в ваш скрипт Python:
import requests
from bs4 import BeautifulSoup
Шаг 3. Создайте функцию для получения содержимого веб-страницы.
Создайте функцию для получения содержимого веб-страницы с помощью библиотеки Requests:
def fetch_page(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
print(f"Failed to fetch {url} (status code {response.status_code})")
return None
Шаг 4. Создайте функцию для анализа содержимого веб-страницы.
Создайте функцию для анализа содержимого веб-страницы с помощью библиотеки Beautiful Soup:
def parse_page(html):
soup = BeautifulSoup(html, "html.parser")
return soup
Шаг 5. Создайте функцию для извлечения ссылок из проанализированного контента.
Создайте функцию для извлечения всех ссылок из проанализированного содержимого веб-страницы:
def extract_links(soup, base_url):
links = []
for a_tag in soup.find_all("a"):
href = a_tag.get("href")
if href and not href.startswith("#"):
if not href.startswith("http"):
href = base_url + href
links.append(href)
return links
Шаг 6. Создайте функцию для сканирования веб-сайта.
Создайте функцию для рекурсивного сканирования сайта:
def crawl_website(url, max_depth=2, depth=0):
if depth > max_depth:
return
html = fetch_page(url)
if not html:
return
soup = parse_page(html)
links = extract_links(soup, url)
print(f"{' ' * depth}[{depth}] {url}")
for link in links:
crawl_website(link, max_depth, depth + 1)
Шаг 7. Запустите сканер
Запустите сканер, вызвав
crawl_website
функция с желаемым URL и максимальной глубиной:
if __name__ == "__main__":
start_url = "https://example.com/"
max_depth = 2
crawl_website(start_url, max_depth)
В этом пошаговом руководстве показано, как сканировать веб-сайт с помощью Python. Вы можете настроить
crawl_website
функция для обработки определенных структур веб-сайта, добавления логики для хранения извлеченной информации или реализации более продвинутых функций сканирования, таких как обработка файла robots.txt, ограничение скорости или распараллеливание запросов.
12 советов, как просканировать сайт и не быть заблокированным
Вот основные стратегии сканирования веб-страниц без блоков:
#1: проверка протокола исключения роботов
Перед сканированием или скрапингом веб-сайта убедитесь, что ваша цель разрешает сбор данных со своей страницы. Проверьте файл протокола исключения роботов веб-сайта (robots.txt) и придерживайтесь правил веб-сайта.
Даже если веб-сайт позволяет сканирование, будьте уважительны и не наносите вред сайту. Соблюдайте правила, указанные в протоколе исключения роботов, сканируйте в часы непиковой нагрузки, ограничивайте запросы, исходящие с одного IP-адреса, и устанавливайте задержку между запросами.
Однако даже если веб-сайт позволяет веб-скрапинг, вы все равно можете столкнуться с блокировками, поэтому важно также выполнить дополнительные шаги. Для более полного руководства см. наш учебник по веб-скрапингу Python.
#2: используйте прокси-сервер
Без прокси-серверов сканирование веб-страниц было бы практически невозможно. Выберите надежного поставщика прокси-серверов и выберите между центрами обработки данных и домашними IP-прокси в зависимости от вашей задачи.
Использование посредника между вашим устройством и целевым веб-сайтом уменьшает блокировки IP-адресов, гарантирует анонимность и позволяет вам получать доступ к веб-сайтам, которые могут быть недоступны в вашем регионе. Например, если вы находитесь в Германии, вам может потребоваться использовать прокси-сервер США для доступа к веб-контенту в Соединенных Штатах.
Для достижения оптимальных результатов выбирайте прокси-провайдера с большим пулом IP-адресов и широким диапазоном местоположений.
#3: ротация IP-адресов
При использовании пула прокси-серверов крайне важно чередовать IP-адреса.
Если вы отправите слишком много запросов с одного и того же IP-адреса, целевой веб-сайт вскоре распознает в вас угрозу и заблокирует ваш IP-адрес. Ротация прокси позволяет вам выглядеть как несколько разных пользователей Интернета и снижает вероятность блокировки.
Все Oxylabs Residential Proxies ротируют IP-адреса, но если вы используете Datacenter Proxies, вам следует использовать службу ротатора прокси. Мы также ротируем прокси IPv6 и IPv4. Если вам интересны различия между IPv4 и IPv6, прочитайте статью, написанную моей коллегой Иветой.
#4: используйте настоящие пользовательские агенты
Большинство серверов, на которых размещаются веб-сайты, могут проверять заголовки HTTP-запросов, генерируемых роботами-сканерами. Этот заголовок HTTP-запроса, называемый пользовательским агентом, содержит различную информацию — от операционной системы и программного обеспечения до типа приложения и его версии.
Серверы могут легко обнаружить подозрительные пользовательские агенты. Реальные пользовательские агенты содержат популярные конфигурации HTTP-запросов, отправленные обычными посетителями. Чтобы избежать блокировки, обязательно настройте свой пользовательский агент так, чтобы он напоминал органический.
Поскольку каждый запрос, сделанный веб-браузером, содержит пользовательский агент, вам следует часто переключать пользовательский агент.
Также важно использовать самые современные и популярные пользовательские агенты. Если вы делаете запросы с пятилетним пользовательским агентом из неподдерживаемой версии Firefox, это вызывает много тревожных сигналов. Вы можете найти в Интернете общедоступные базы данных, которые покажут вам, какие пользовательские агенты в настоящее время наиболее популярны. У нас также есть собственная регулярно обновляемая база данных, поэтому свяжитесь с нами, если вам нужен доступ к ней.
#5: правильно установите отпечаток пальца
Механизмы защиты от парсинга становятся все более изощренными, и некоторые веб-сайты используют протокол управления передачей (TCP) или снятие отпечатков IP-адресов для обнаружения ботов.
При парсинге веб-страниц TCP оставляет различные параметры. Эти параметры устанавливаются операционной системой или устройством конечного пользователя. Если вы задаетесь вопросом, как избежать попадания в черный список при парсинге, убедитесь, что ваши параметры согласованы. В качестве альтернативы вы можете использовать Web Unblocker — прокси-решение на базе ИИ с функцией динамического снятия отпечатков пальцев. Web Unblocker объединяет множество переменных снятия отпечатков пальцев таким образом, что даже когда он определяет один наиболее эффективный отпечаток пальца, отпечатки пальцев все равно кажутся случайными и могут пройти проверку антиботов.
#6: Предостережение против ловушек-приманок
Будьте осторожны с ловушками-ловушками, которые представляют собой ссылки в HTML-коде, которые могут быть обнаружены веб-скребками, но невидимы для обычных пользователей. Эти ловушки используются для идентификации и блокировки веб-сканеров, поскольку по этим ссылкам могут переходить только роботы. Хотя настройка приманок требует большой работы, некоторые цели могут использовать их для обнаружения веб-сканеров, поэтому будьте осторожны, если ваш запрос заблокирован и обнаружен сканер.
#7: Используйте службы решения CAPTCHA
CAPTCHA представляет собой серьезную проблему для веб-сканирования, поскольку требует от посетителей решения головоломок для подтверждения того, что они люди. Эти головоломки часто включают изображения, которые компьютерам трудно расшифровать. Чтобы обойти CAPTCHA, используйте специальные сервисы решения CAPTCHA или готовые к использованию инструменты сканирования, такие как инструмент сканирования данных Oxylabs, который решает CAPTCHA и предоставляет готовые к использованию результаты. Подозрительное поведение может побудить цель запросить решение CAPTCHA.
#8: изменение схемы сканирования
Чтобы избежать блокировки, измените схему навигации вашего краулера, чтобы она казалась менее предсказуемой. Вы можете добавить случайные щелчки, прокрутки и движения мыши, чтобы имитировать поведение обычного пользователя при просмотре. Для лучшей практики подумайте о том, как обычный пользователь просматривает веб-сайт, и примените эти принципы к инструменту. Например, посещение домашней страницы перед запросом внутренних страниц является логичной схемой.
#9: Уменьшить скорость скрепера
Чтобы снизить риск блокировки, замедлите скорость парсера, добавляя случайные перерывы между запросами или инициируя команды ожидания перед выполнением действия. Если URL-адрес ограничен по скорости, соблюдайте ограничения веб-сайта и уменьшите скорость парсера, чтобы избежать дросселирования запросов.
#10: сканирование в непиковые часы
Краулеры работают быстрее, чем обычные пользователи, и могут существенно повлиять на нагрузку на сервер. Сканирование во время высокой нагрузки может отрицательно повлиять на удобство работы пользователей из-за замедления работы службы. Чтобы избежать этого, выполняйте сканирование в непиковые часы, например сразу после полуночи (локально для службы), чтобы снизить нагрузку на сервер.
#11: избегайте очистки изображений
Парсинг изображений может быть рискованным, поскольку они часто представляют собой объекты с большим объемом данных, которые могут быть защищены авторскими правами. Кроме того, изображения часто скрыты в элементах JavaScript, что может усложнить процесс парсинга и замедлить работу веб-парсера. Чтобы извлечь изображения из элементов JS, потребуется использовать более сложную процедуру очистки.
#12: используйте автономный браузер
Безголовый браузер — это инструмент, который работает как обычный браузер, но без графического пользовательского интерфейса. Он позволяет очищать загружаемый контент путем рендеринга элементов JavaScript. Наиболее широко используемые браузеры, Chrome и Firefox, имеют автономные режимы, которые можно использовать для очистки веб-страниц без активации блоков.
Видеоурок о том, как сканировать сайт
В этом руководстве Oxylabs вы найдете основы веб-краулинга и его важность для сбора данных, а также обсудите этические и правовые аспекты. Он показывает популярные инструменты, такие как Scrapy, Beautiful Soup и Selenium, и помогает вам выбрать лучший из них для ваших нужд.
Учебник поможет вам понять структуру веб-сайта, создать простой веб-краулер и извлечь нужную вам информацию. Он также напоминает вам о хороших манерах веб-скрапинга, таких как соблюдение правил robots.txt и не перегрузка серверов.
Видео также поможет вам справиться с такими задачами, как получение данных с динамических страниц, работа с несколькими страницами и обход блоков. Он показывает, как сохранять и систематизировать ваши данные, а также дает советы, как сделать ваш проект сканирования веб-страниц более масштабным и эффективным. Наконец, он напоминает вам всегда следовать этическим и правовым принципам.
Когда мы приближаемся к концу нашего волнующего исследования мира веб-краулинга, становится ясно, что овладение этим искусством сродни обладанию картой сокровищ в огромном, постоянно меняющемся ландшафте Интернета. Мы углубились в тонкости, которые отличают веб-краулинг от веб-скрапинга, раскрыли разнообразные стратегии и рискнули окунуться в динамические сферы веб-сайтов JavaScript и веб-краулинга на основе Python.
Наша сокровищница советов и рекомендаций гарантирует, что ваши усилия по сканированию веб-страниц останутся ответственными и этичными, избегая ловушек и препятствий, которые могут возникнуть на этом пути. Итак, отправляясь в безграничный цифровой океан, вооружившись знаниями и мудростью, почерпнутыми из этой всеобъемлющей статьи, помните, что способность использовать возможности сканирования веб-страниц поднимет вас над конкурентами и откроет скрытые драгоценные камни в глубинах цифровой мир.