В этом посте мы рассмотрим несколько реальных примеров веб-скрейпинга с использованием Python и популярных библиотек BeautifulSoup и Scrapy.
Пример 1: Скраппинг новостных статей
Допустим, вы хотите построить модель машинного обучения для анализа настроений в новостных статьях. Для этого вам понадобится большой набор данных новостных статей с метками, указывающими на настроение каждой статьи. Вместо того чтобы вручную собирать и маркировать статьи, можно использовать веб-скрейпинг для автоматизации этого процесса.
Одним из популярных источников новостных статей является сайт New York Times. Вот некоторый код на языке Python, использующий BeautifulSoup для соскабливания заголовков и текста статей с сайта New York Times:
import requests
from bs4 import BeautifulSoup
url="https://www.nytimes.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
articles = []
for article in soup.find_all('article'):
headline = article.find('h2').text.strip()
body = article.find('p').text.strip()
articles.append({'headline': headline, 'body': body})
В этом примере мы сначала используем библиотеку requests для получения HTML-содержимого главной страницы New York Times. Затем мы создаем объект BeautifulSoup и используем его методы для извлечения заголовков и текста из каждой статьи на странице. Мы храним данные в списке словарей, каждый из которых представляет статью, ее заголовок и основной текст.
Пример 2: Поиск цен на товары
Еще один распространенный случай использования веб-скреппинга - сбор данных о ценах на товары с сайтов электронной коммерции. Это может быть полезно для исследования рынка, анализа конкурентов и многого другого.
Допустим, вы хотите сравнить цены на определенный товар на нескольких сайтах электронной коммерции. Вот некоторый код на языке Python с использованием Scrapy для сопоставления цен на товар с Amazon, Best Buy и Walmart:
import scrapy
class ProductSpider(scrapy.Spider):
name="product_spider"
start_urls = [
'https://www.amazon.com/dp/B08J62XKJT',
'https://www.bestbuy.com/site/sony-playstation-5-
console/6426149.p?skuId=6426149',
'https://www.walmart.com/ip/Sony-PlayStation-5/363472942'
]
def parse(self, response):
title = response.css('h1.a-text-normal::text').get()
price = response.css('span.a-offscreen::text').get()
yield {'title': title, 'price': price}
Пример 3: Сбор данных о погоде
Веб-скрейпинг можно также использовать для сбора данных о погоде с таких сайтов, как Weather Underground или Национальная метеорологическая служба. Эти данные можно использовать для моделирования климата, прогнозирования погоды и многого другого.
Допустим, вы хотите собрать данные о температуре в городе Матмата с сайта Weather Underground. Вот некоторый код на языке Python с использованием BeautifulSoup для сбора данных о температуре:
import requests
from bs4 import BeautifulSoup
url="https://www.wunderground.com/weather/tn/matmata"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
temperature = soup.find('span', {'class': 'wu-value wu-value-to'}).text.strip()
print(f"The current temperature in Matmata is {temperature} degrees Fahrenheit.")
В этом примере мы используем запросы и BeautifulSoup для получения текущей температуры для города Матмата, Тунис, с сайта Weather Underground. Сначала мы отправляем GET-запрос на сайт и создаем объект BeautifulSoup. Затем мы используем CSS-селектор для извлечения данных о температуре со страницы и выводим их на консоль.
Это лишь несколько примеров из множества реальных применений веб-скрейпинга с помощью Python. Независимо от того, собираете ли вы данные для научных или деловых целей, веб-скрейпинг поможет автоматизировать процесс и сэкономить драгоценное время и ресурсы.
До встречи в следующем посте!