Хочу собрать данные с сайта для первого проекта — как делать это этично и законно?
Хочу сделать проект-парсер: например, собрать список книг с какого-нибудь сайта в табличку. Но я переживаю — это вообще нормально и законно? Не получу ли я проблем? И с чего технически начинать новичку, чтобы не наломать дров?
2 ответа
Сбор открытых данных для учёбы — нормально, если делать аккуратно и уважительно. Несколько правил этичного парсинга:
- Бери только открытые, публичные страницы — то, что и так видно любому без логина. Не лезь за авторизацию и в личные кабинеты.
- Проверь правила сайта — файл
сайт/robots.txtи пользовательское соглашение. Если там написано «не парсить» — уважай это. - Не долби сервер — ставь паузу между запросами (
time.sleep(1)), не качай тысячи страниц в секунду. Иначе это уже похоже на атаку. - Не выдавай чужие данные за свои и не публикуй спарсенное как готовый продукт.
Для старта потренируйся на специально учебных сайтах вроде quotes.toscrape.com или books.toscrape.com — они созданы именно для тренировки парсинга, там точно ничего не нарушишь.
Технически минимум — requests + BeautifulSoup:
import requests
from bs4 import BeautifulSoup
html = requests.get('https://books.toscrape.com/').text
soup = BeautifulSoup(html, 'html.parser')
for h in soup.select('h3 a'):
print(h.get('title'))
Начни с одной страницы и просто выведи заголовки — этого уже достаточно для первого проекта.
Добавлю про «как не наломать дров»: всегда смотри, есть ли у сайта официальный API. Если есть — бери данные через него, а не парси HTML. API для того и сделан, он стабильнее (вёрстка меняется, и парсер ломается) и точно разрешён. Парсинг — это запасной вариант, когда API нет.