Похожие презентации:
python_parsing_presentation[1]
1.
Парсинг и API на PythonКак научить программу общаться с интернетом и собирать данные
2.
1. Списки (Lists) — Хранилище ссылок и элементов• Динамические массивы для упорядоченных
данных.
• В парсинге используются для накопления
списков найденных URL, заголовков статей или
цен.
• Поддерживают итерацию с помощью циклов
`for`.
• Основные методы: `.append()` добавляет в
конец, `.extend()` объединяет списки.
# Создание и наполнение списка
links = []
# Добавление элементов
links.append('https://site.com/art1')
links.append('https://site.com/art2')
# Итерация (обход списка)
for link in links:
print(f'Сканирую: {link}')
# Результат: links = ['...art1', '...art2']
3.
2. Словари (Dictionaries) — Работа с парами Ключ-Значе• Неупорядоченные структуры данных в формате
`ключ: значение`.
• Критически важны для работы с API (так как
формат JSON преобразуется именно в словари
Python).
• Позволяют мгновенно находить параметры
(например, token, user_id).
• Метод `.get(key, default)` безопасен: не вызывает
ошибку, если ключа нет.
# Данные в формате словаря (как JSON)
user_profile = {
'id': 4589,
'username': 'cyber_parser',
'is_active': True
}
# Безопасное получение данных
status = user_profile.get('is_active', False)
print(status) # True
# Добавление новой пары
user_profile['last_login'] = '2026-10-23'
4.
3. Функции (Functions) — Изоляция и повтор логики• Блоки кода, которые выполняются только при
вызове.
• Избавляют от дублирования кода (`DRY` — Don't
Repeat Yourself).
• В автоматизации: оборачиваем в функцию
скачивание одной страницы, а затем вызываем её
в цикле для сотен страниц.
• Могут принимать аргументы и возвращать
результат с помощью `return`.
# Функция для очистки текста от лишних пробелов
def clean_text(raw_html_text):
clean = raw_html_text.strip()
return clean.replace('\n', ' ')
# Использование функции
title = '
Новость дня! \n '
ready_title = clean_text(title)
print(ready_title) # 'Новость дня!'
5.
4. Библиотека Requests — Дверь в интернет• Позволяет отправлять HTTP-запросы (GET,
POST) к серверам.
• `requests.get(url)` скачивает содержимое
страницы или делает запрос к API.
• `response.status_code` проверяет успешность
(200 — ОК, 404 — Не найдено).
• `response.text` содержит HTML-код страницы.
• `response.json()` автоматически превращает
ответ API в словарь.
import requests
url = 'https://api.github.com'
response = requests.get(url)
if response.status_code == 200:
# Превращаем ответ в словарь
data = response.json()
print(data.get('repository_url'))
else:
print(f'Ошибка: {response.status_code}')
6.
5. BeautifulSoup4 — Извлечение данных из HTML• Инструмент для парсинга (разбора) сырого
HTML-кода.
• Строит дерево элементов, позволяя искать теги
по именам, классам и атрибутам.
• `soup.find()` находит первое совпадение.
• `soup.find_all()` находит список всех подходящих
тегов.
• `.text` достает чистый текст без тегов.
• `['href']` извлекает значение ссылки.
from bs4 import BeautifulSoup
html = '<div class="article"><a
href="/link">Заголовок</a></div>'
soup = BeautifulSoup(html, 'html.parser')
# Поиск элемента
link_tag = soup.find('a')
text = link_tag.text
url = link_tag['href']
print(f'{text}: {url}')
# 'Заголовок'
# '/link'
7.
6. Готовый боевой скрипт сбора данныхimport requests
from bs4 import BeautifulSoup
def parse_news(url):
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
if response.status_code != 200:
return []
soup = BeautifulSoup(response.text, 'html.parser')
# Ищем все заголовки новостей (например, теги h2 с классом post-title)
titles = soup.find_all('h2', class_='post-title')
result = []
for t in titles:
result.append(t.text.strip())
return result
# Вызов парсера
news_list = parse_news('https://news-example-site.com')
print(f'Собрано {len(news_list)} новостей')
Программирование