Веб-скрейпинг с LLaMA 3: превращаем любой сайт в структурированный JSON (руководство 2026 года)
With LLaMA 3, я легко могу превращать неструктурированный HTML в чистый, структурированный JSON. Это более продуманный и надежный способ собирать данные, который делает весь процесс более плавным и менее подверженным ошибкам. Давайте разберемся, как это работает!
Что такое LLaMA 3?
LLaMA 3, что расшифровывается как Большая языковая модель Meta AI, это третья итерация модели с открытыми весами от Meta, выпущенная в апреле 2024 года. Это большая языковая модель, которая поддерживает разные задачи, от генерации текста до понимания естественного языка. Модели LLaMA 3 доступны в разных размерах, от от 8 миллиардов параметров (8B) до 405 миллиардов параметров (405B)Эти модели рассчитаны на эффективную работу на различных аппаратных конфигурациях, поэтому они доступны многим разработчикам и компаниям.
В отличие от традиционных методов скрейпинга, которые опираются на заранее заданные селекторы, LLaMA 3 понимает контент с учетом контекста. Это означает, что она может интеллектуально извлекать информацию из веб-страниц даже тогда, когда меняется верстка или на сайте есть сложный динамически загружаемый контент.
Зачем использовать LLaMA 3 для веб-скрейпинга?
Со временем веб-скрейпинг стал сложнее по нескольким причинам:
- Dynamic Content: Многие сайты теперь загружают контент динамически с помощью JavaScript. Из-за этого традиционные методы скрейпинга, которые опираются на статические HTML-селекторы, становятся неэффективными.
- Website Layout Changes: Веб-страницы часто обновляют свой дизайн, из-за чего ломаются скрипты скрейпинга, зависящие от конкретного расположения элементов.
- Anti-Bot Protections: Многие сайты внедрили антибот-механизмы, такие как CAPTCHA, блокировка IP и защита на основе JavaScript, из-за чего собирать данные без блокировки стало сложнее.
Традиционные методы скрейпинга, например с использованием XPath или CSS-селекторов, хрупкие, потому что ломаются при изменении верстки сайта. Однако LLaMA 3 предлагает новый способ решения этих задач. Она может разбирать контент с учетом контекста, поэтому менее вероятно, что решение сломается из-за небольших изменений в верстке сайта.
Среди преимуществ использования LLaMA 3 для веб-скрейпинга можно выделить:
- Flexibility: LLaMA 3 может адаптироваться к разным структурам сайтов, что делает его отличным инструментом для сбора данных с динамичных и часто меняющихся сайтов.
- Efficiency: Преобразуя сырой HTML в чистые структурированные данные в формате JSON, LLaMA 3 упрощает хранение и обработку собранной информации.
- Reliability: Контекстное понимание контента моделью гарантирует, что она извлекает только релевантные данные, снижая риск ошибок.
🔗 Ускорьте веб-скрейпинг с MCP от Bright Data
Для более надежных и актуальных результатов стоит интегрировать Model Context Protocol (MCP) от Bright Data в вашу конфигурацию LLaMA 3. MCP обеспечивает доступ к веб-ресурсам в реальном времени, обходит геоограничения и антибот-защиту и гарантирует, что модель обрабатывает самые свежие доступные данные. Это особенно полезно при скрейпинге динамических или защищенных сайтов, делая ваш пайплайн более устойчивым и точным без лишней сложности.
Примечание: я не связан с Bright Data.
Подготовка окружения для LLaMA 3
Перед тем как приступить к скрейпингу, нужно выполнить несколько предварительных условий:
- Python 3: Убедитесь, что в вашей системе установлен Python 3. Это руководство предполагает базовое знание Python.
- Operating System Compatibility: LLaMA 3 работает на macOS (Big Sur или новее), Linux и Windows (10 или новее).
- Hardware Resources: В зависимости от выбранного размера модели вам понадобится достаточно ОЗУ и дискового пространства. Например, для LLaMA 3.1 с 8 миллиардами параметров требуется около 6–8 ГБ ОЗУ и 4,9 ГБ дискового пространства.
После подготовки окружения вам потребуется установить Ollama, инструмент для загрузки, настройки и локального запуска моделей LLaMA.
Installing Ollama
Ollama упрощает процесс загрузки и настройки моделей LLaMA 3. Чтобы начать:
- Перейдите на официальный сайт Ollama и скачайте приложение, совместимое с вашей операционной системой.
- Следуйте инструкциям по установке, приведенным на сайте.
После установки Ollama вам нужно выбрать подходящую модель в зависимости от вашего оборудования и сценария использования. Для большинства пользователей llama3.1:8b модель идеальна, потому что обеспечивает хороший баланс между производительностью и требованиями к ресурсам.
Запуск LLaMA 3 локально
После установки Ollama можно начать использовать LLaMA 3, выполнив следующие шаги:
- Скачать модель: Откройте терминал и выполните следующую команду, чтобы загрузить модель LLaMA 3.1:
ollama run llama3.1:8b
Эта команда загрузит модель и запустит интерактивную оболочку, в которой вы сможете тестировать модель, отправляя запросы вроде:
>>> who are you?
Я LLaMA, ИИ-ассистент, разработанный Meta AI…
- Запустите сервер Ollama: Чтобы запустить модель LLaMA как локальный сервер, используйте следующую команду:
ollama serve
Это запускает сервер по адресу http://127.0.0.1:11434/, который можно открыть в браузере, чтобы проверить, что сервер работает.
Создание веб-скрейпера с помощью LLaMA 3
Теперь, когда LLaMA 3 настроена и запущена, давайте разберем процесс создания простого веб-скрейпера для извлечения информации о товарах с интернет-магазина вроде Amazon.
Скрейпер будет работать по многоэтапному рабочему процессу:
- Browser Automation: Используйте Selenium, чтобы загрузить страницу и отрендерить динамический контент.
- HTML Extraction: Найдите контейнер с данными о товаре на веб-странице.
- Markdown Conversion: Преобразуйте HTML-контент в Markdown, чтобы LLaMA лучше обрабатывала его.
- Извлечение данных с помощью LLaMA: Используйте LLaMA для извлечения структурированных данных и преобразования их в формат JSON.
- Output Handling: Сохраните извлеченные данные в JSON-файл для дальнейшего анализа.
Шаг 1: Установка необходимых библиотек
Для начала установите необходимые библиотеки Python:
pip install requests selenium webdriver-manager markdownify
- requests: Позволяет отправлять HTTP-запросы к модели LLaMA.
- селен: Автоматизирует взаимодействие с браузером, что особенно полезно для сайтов с динамическим контентом.
- webdriver-manager: Помогает управлять нужной версией ChromeDriver, необходимой для Selenium.
- markdownify: Преобразует HTML-контент в формат Markdown для более удобной обработки с помощью LLaMA.
Шаг 2: Настройте Selenium WebDriver
Затем вам нужно настроить headless-браузер с помощью Селен. Это позволяет взаимодействовать с сайтами программно, без открытия браузера с графическим интерфейсом.
Вот как инициализировать headless-браузер с помощью Chrome:
с сайта селен импорт webdriver
с сайта selenium.webdriver.chrome.service импорт Service
с сайта selenium.webdriver.chrome.options импорт Опции
с сайта webdriver_manager.chrome импорт ChromeDriverManager
options = Options()
options.add_argument(" - headless")
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
Шаг 3: Извлечение HTML со страницы товара Amazon
Теперь нужно извлечь HTML-контент страницы товара. Страницы товаров Amazon содержат информацию о товаре внутри контейнера, доступ к которому можно получить с помощью Selenium:
с сайта selenium.webdriver.common.by импорт По ссылке
с сайта selenium.webdriver.support.ui импорт WebDriverWait
с сайта selenium.webdriver.support импорт expected_conditions в роли EC
wait = WebDriverWait(driver, 15)
product_container = wait.until(EC.presence_of_element_located((By.ID, "ppd")))
page_html = product_container.get_attribute("outerHTML")
Шаг 4: преобразуйте HTML в Markdown
Преобразуйте извлеченный HTML в Markdown, чтобы оптимизировать обработку LLaMA. Markdown — более чистый и эффективный формат для работы с большими языковыми моделями.
с сайта markdownify импорт markdownify в роли md
clean_text = md(page_html, heading_style="ATX")
Шаг 5: Создайте промпт для структурированного извлечения данных
Ключ к успешному скрейпингу с LLaMA 3 - правильно составленный промпт. Он сообщает LLaMA, какие данные извлекать из предоставленного контента.
Вот пример промпта для извлечения данных о товаре:
PROMPT = (
"Вы эксперт по извлечению данных о товарах Amazon. Ваша задача — извлечь данные о товаре из предоставленного содержимого. "
"Верните ТОЛЬКО валидный JSON с РОВНО следующими полями и форматами:nn"
"{n"
' "title": "string - название товара",n' ' "цена": число - текущая цена (только числовое значение)",n'
' "original_price": число или null - исходная цена, если доступна,n'
' "discount": число или null - процент скидки, если он доступен,n'
' "rating": number or null - средний рейтинг (по шкале 0–5),n'
' "review_count": число или null - общее количество отзывов,n'
' "description": "string - основное описание продукта",n'
' "features": ["string"] - list of bullet point features,n'
' "availability": "string - статус наличия",n'
' "asin": "string - 10-character Amazon ID"n'
"}nn"
"Return ONLY the JSON without any дополнительный текст."
)
Шаг 6: вызовите API LLaMA
Когда Markdown-контент готов, отправьте его в API LLaMA, чтобы извлечь структурированные данные. Для отправки запроса используйте следующий код на Python:
импорт requests
импорт json
response = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "llama3.1:8b",
"prompt": f"{PROMPT}nn{clean_text}",
"stream": Ложь,
"формат": "json",
"опции": {
"temperature": 0.1,
"num_ctx": 12000,
},
},
timeout=250,
)
raw_output = response.json()["response"].strip()
product_data = json.loads(raw_output)
Шаг 7: сохраните результаты
Наконец, сохраните извлеченные данные о товаре в JSON-файл:
с открыть("product_data.json", "w", кодировка="utf-8") в роли f:
json.dump(product_data, f, indent=2, ensure_ascii=Ложь)
Заключение
Использование LLaMA 3 для веб-скрейпинга меняет правила игры. Это позволяет извлекать данные с сайтов эффективнее и надежнее, чем традиционные методы скрейпинга. Вы можете хранить и обрабатывать данные, преобразуя сырой HTML в структурированный JSON. Независимо от того, извлекаете ли вы сведения о товарах с сайтов электронной коммерции вроде Amazon или собираете данные с других сложных веб-сайтов, LLaMA 3 предлагает гибкое и мощное решение, которое упрощает веб-скрейпинг и делает его более надежным.

