Для работы с CSV файлами в Python можно использовать встроенный модуль csv.
Пример:
import csv
# данные для записи
data = [
["Имя", "Возраст", "Город"], # Заголовки
["Алексей", 30, "Москва"],
["Мария", 25, "Санкт-Петербург"],
["Иван", 22, "Екатеринбург"]
]
# запись данных в CSV файл
with open('data.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(data) # запись всех строк
# дозапись в файл
with open('data.csv', mode='a', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(["Ирина", 33, "Сочи"])Итераторы — это объекты, которые позволяют перебирать другие объекты, такие как списки и кортежи, без необходимости обращаться к ним по индексу. Чтобы создать собственный итератор, необходимо в классе реализовать два метода: __iter__() и __next__().
-
__iter__()— возвращает экземпляр итератора. Обычно это просто self. -
__next__()— возвращает следующий элемент последовательности. Если элементов больше нет, он должен вызвать исключение StopIteration для уведомления о завершении перебора.
Пример создания собственного итератора:
class SimpleIterator:
def __init__(self, limit):
self.limit = limit # ограничение
self.counter = 0 # счётчик
def __iter__(self):
return self
def __next__(self):
if self.counter < self.limit:
self.counter += 1
return self.counter
else:
raise StopIteration
iterator = SimpleIterator(3)
for val in iterator:
print(val)Результат работы:
1
2
3
requests — это библиотека Python для работы с HTTP-запросами. Она предоставляет простой и удобный способ взаимодействия с веб-ресурсами.
Установка:
pip install requests
get — это основной HTTP-метод для получения данных с сервера. Он используется когда нужно:
- Загрузить веб-страницу
- Получить данные API
- Скачать файл
- Выполнить поиск
Пример:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get("https://my-url.com", headers=headers)
if response.ok:
print(response.content)BeautifulSoup — это библиотека Python для парсинга HTML и XML документов. Она создает дерево объектов из разобранной страницы, что позволяет легко извлекать и манипулировать данными.
Установка:
pip install beautifulsoup4
Основные возможности:
- Парсинг "грязного" HTML — работает даже с некорректной разметкой
- Простой поиск — мощные методы для нахождения элементов
- Навигация по дереву — перемещение между элементами
- Изменение документа — добавление, удаление, изменение тегов
Пример:
from bs4 import BeautifulSoup
import requests
# Получаем HTML страницу
url = "https://example.com"
response = requests.get(url)
html = response.text
# Создаем объект BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
# Извлекаем заголовок страницы
title = soup.find('title')
print(f"Заголовок страницы: {title.text}")
# Находим все ссылки
links = soup.find_all('a')
print(f"Найдено ссылок: {len(links)}")
# Выводим текст всех ссылок
for link in links:
print(link.get_text(), link.get('href'))Варианты 1-10:
- Скачайте не менее 30 изображений обложек книг (далее для краткости - обложка) своего варианта с помощью requests и BeautifulSoup с сайта https://books.toscrape.com/.
Варианты 11-20:
- Скачайте не менее 30 аудиофайлов своего варианта с помощью requests и BeautifulSoup с сайта https://sound-effects.ru/.
Для всех вариантов:
- Составьте аннотацию в виде csv-файла, в котором будет абсолютный и относительный путь к каждому файлу.
- Напишите итератор по путям к файлам - используйте в качестве параметра конструктора файл-аннотации или путь к папке.
Параметры по варианту, путь к папке для сохранения и путь к файлу аннотации необходимо передавать через аргументы командной строки.
-
Напишите программу, которая скачивает минимум по одной обложке книг каждого жанра, представленного на сайте. Пользователь задаёт количество книг одного жанра.
-
Пользователь задаёт один или несколько жанров книг. Напишите программу, которая скачивает равное количество обложек каждого заданного жанра.
-
Напишите программу, которая скачивает обложки книг случайных жанров. Пользователь задаёт количество жанров.
-
Пользователь задаёт жанры, которые нужно исключить из списка скачивания. Напишите программу, которая скачивает обложки книг случайных жанров, кроме исключённых пользователем.
-
Пользователь задаёт минимальную цену книги. Напишите программу, которая скачивает обложки книг с ценой выше заданной.
-
Напишите программу, которая скачивает обложки самых дорогих книг на сайте. Пользователь задаёт количество скачиваемых книг.
-
Пользователь задаёт рейтинг книги. Напишите программу, которая скачивает обложки книг с заданным рейтингом.
-
Пользователь задаёт минимальный рейтинг книги. Напишите программу, которая скачивает обложки книг с рейтингом не ниже заданного.
-
Пользователь задаёт ключевые слова для поиска (одно или несколько). Напишите программу, которая скачивает обложки книг с одним из ключевых слов в названии.
-
Пользователь задаёт минимальное количество книг в наличии. Напишите программу, которая скачивает обложки книг с количеством в наличии не меньше заданного.
-
Пользователь задаёт одну или несколько категорий звуков. Напишите программу, которая скачивает равное количество звуков каждой заданной категории.
-
Напишите программу, которая скачивает звуки случайных категорий. Пользователь задаёт количество звуков.
-
Пользователь задаёт категории, которые нужно исключить из списка скачивания. Напишите программу, которая скачивает звуки случайных категорий, кроме исключённых.
-
Пользователь задаёт минимальную и максимальную длительность аудиозаписи. Напишите программу, которая скачивает звуки с длительностью в выбранном диапазоне.
-
Пользователь задаёт минимальный и максимальный размер аудиофайла. Напишите программу, которая скачивает звуки с размером в выбранном диапазоне.
-
Напишите программу, которая скачивает звуки с самым высоким рейтингом в своей категории. Пользователь задаёт категории (одну или несколько) и количество звуков для скачивания в каждой категории.
-
Напишите программу, которая скачивает звуки с самым маленьким количеством скачиваний в своей категории (одна категория - один звук). Пользователь задаёт количество категорий.
-
Напишите программу, которая скачивает звуки с самым высоким рейтингом на сайте. Пользователь задаёт количество звуков для скачивания.
-
Пользователь задаёт ключевые слова для поиска (одно или несколько). Напишите программу, которая скачивает звуки с одним из ключевых слов в названии.
-
Напишите программу, которая скачивает случайные звуки с сайта. Пользователь задаёт количество звуков.