Расширенный веб-скребок Python
Создайте продвинутый веб-скребок на Python. Научитесь извлекать данные страницы, обрабатывать блоки пользовательского агента, управлять ограничениями скорости и структурировать выходные данные.
Обзор
Веб-скрапинг включает в себя программную выборку веб-страниц и анализ их HTML-структуры для извлечения определенных данных. В Python это традиционно достигается с помощью запросов и BeautifulSoup.
Расширенные скреперы требуют надежной конфигурации. Простой запрос страниц может привести к блокировке или бану по IP, что потребует настройки заголовков, таких как пользовательские агенты пользователя, и введения случайных интервалов задержки.
Этот интерактивный пример имитирует очистку фиктивных данных с проверкой. Он демонстрирует, как находить вложенные контейнеры, обрабатывать тайм-ауты сети и структурировать выходные данные в чистые списки.
Код и вывод выполнения
Процедура очистки веб-страниц с настраиваемыми заголовками, управлением таймаутами и структурами анализатора HTML.
import requests
from bs4 import BeautifulSoup
import time
def scrape_quotes():
# Mock URL designed for scraping practice
url = "https://quotes.toscrape.com/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
print(f"Initiating request to: {url}...")
try:
# Request with timeout protection
response = requests.get(url, headers=headers, timeout=5)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
quotes = soup.find_all("div", class_="quote", limit=3)
results = []
for q in quotes:
text = q.find("span", class_="text").text
author = q.find("small", class_="author").text
tags = [t.text for t in q.find_all("a", class_="tag")]
results.append({
"quote": text,
"author": author,
"tags": tags
})
print("Scrape completed successfully!\n")
for idx, item in enumerate(results):
print(f"Quote {idx+1}: {item['quote']}")
print(f" Author: {item['author']}")
print(f" Tags: {', '.join(item['tags'])}\n")
except requests.exceptions.RequestException as e:
print(f"Network error occurred: {e}")
scrape_quotes()Initiating request to: https://quotes.toscrape.com/...
Scrape completed successfully!
Quote 1: “The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”
Author: Albert Einstein
Tags: change, deep-thoughts, thinking
Quote 2: “It is our choices, Harry, that show what we truly are, far more than our abilities.”
Author: J.K. Rowling
Tags: abilities, choices
Quote 3: “There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”
Author: Albert Einstein
Tags: inspirational, life, live, miracleПошаговая реализация
- Мониторинг и отслеживание цен в торговых каталогах
- Анализ настроений путем сбора данных отзывов с форумов.
- Создание наборов данных академических исследований
Часто задаваемые вопросы
Что такое robots.txt?
Текстовый файл, размещенный в корне домена и указывающий, какие пути поисковым роботам и сканерам разрешено или запрещено сканировать. Вы всегда должны прочитать его, прежде чем писать парсер.
Как я могу очистить страницы, динамически отображаемые с помощью JavaScript?
Стандартные запросы извлекают только статический HTML. Для анализа страниц с большим количеством Javascript вы должны использовать инструменты автоматизации браузера, такие как Playwright или Selenium.