← Все вопросы

Хочу собрать данные с сайта для первого проекта — как делать это этично и законно?

Задан 19 месяцев назад594 просмотров2 ответа
5

Хочу сделать проект-парсер: например, собрать список книг с какого-нибудь сайта в табличку. Но я переживаю — это вообще нормально и законно? Не получу ли я проблем? И с чего технически начинать новичку, чтобы не наломать дров?

2 ответа

11
✓ Принятый ответ — помог автору

Сбор открытых данных для учёбы — нормально, если делать аккуратно и уважительно. Несколько правил этичного парсинга:

  1. Бери только открытые, публичные страницы — то, что и так видно любому без логина. Не лезь за авторизацию и в личные кабинеты.
  2. Проверь правила сайта — файл сайт/robots.txt и пользовательское соглашение. Если там написано «не парсить» — уважай это.
  3. Не долби сервер — ставь паузу между запросами (time.sleep(1)), не качай тысячи страниц в секунду. Иначе это уже похоже на атаку.
  4. Не выдавай чужие данные за свои и не публикуй спарсенное как готовый продукт.

Для старта потренируйся на специально учебных сайтах вроде 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'))

Начни с одной страницы и просто выведи заголовки — этого уже достаточно для первого проекта.

4

Добавлю про «как не наломать дров»: всегда смотри, есть ли у сайта официальный API. Если есть — бери данные через него, а не парси HTML. API для того и сделан, он стабильнее (вёрстка меняется, и парсер ломается) и точно разрешён. Парсинг — это запасной вариант, когда API нет.

Ваш ответ

, чтобы ответить на вопрос.