You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+18-15Lines changed: 18 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,30 +1,30 @@
1
1
# NEWS_API_ETL_Project
2
2
3
3
### Цель
4
-
обрабатывать из внешенго Api новости и используя принцип ETL сохранять нужные новости в базу данных.
4
+
Обрабатывать из внешнего API новости и используя принцип ETL сохранять нужные новости в базу данных.
5
5
6
6
### Стек
7
-
Extract: requests(страна, категоия, ключевое слово, размер страницы (опционально)) -> сохранение статей в папку data/raw
7
+
Extract: requests(страна, категория, ключевое слово, размер страницы (опционально)) -> сохранение статей в папку data/raw
8
8
9
-
Transform: Python скрипт читает данные из нового файла data/raw, смотрит чтобы были указаны: автор, заголовок, описание не меньше 20 символов, url ссылка
9
+
Transform: Python скрипт читает данные из нового файла data/raw, проверяет чтобы были указаны: автор, заголовок, описание не меньше 20 символов, url ссылка
10
10
11
-
Load: psycopg2 подключается к PostgreSQL, перед вставкой разрешается конфлик с уникальной url ссылкой. Если такая ссылка уже есть то новость не добавляется в таблицу
11
+
Load: psycopg2 подключается к PostgreSQL, перед вставкой разрешается конфликт с уникальной url ссылкой. Если такая ссылка уже есть то новость не добавляется в таблицу
12
12
13
-
db: создается база данных и таблица если их еще нет. url присваивается UNICE
13
+
db: создается база данных и таблица если их еще нет. url присваивается UNIQUE
14
14
15
-
Пайплайн: программа запускается скриптом разделенным на 5 основных модулей (db.py, extract.py, load.py, transform.py, main.py)
15
+
Pipeline: программа запускается скриптом разделенным на 5 основных модулей (db.py, extract.py, load.py, transform.py, main.py)
16
16
17
17
### Схема ETL
18
-
top-headlines из NewsApi (extract) -> Филтр на наличие автора, заголовка, описания не меньше 20 символов, наличие url (transform) -> загрузка статей чей url отстуствует в базе данных (load)
18
+
top-headlines из NewsApi (extract) -> Филтр на наличие автора, заголовка, описания не меньше 20 символов, наличие url (transform) -> загрузка статей чей url отсутствует в базе данных (load)
19
19
20
-
### Стуктура папок
20
+
### Структура папок
21
21
```text
22
22
project/
23
23
├── config
24
24
| └── config.py
25
25
├── data /
26
-
| ├──raw / # тут будут хранится статьи до обработки в формате json
27
-
| └──clean / # тут будут хранится статьи после обработки
26
+
| ├──raw / # тут будут храниться статьи до обработки в формате json
27
+
| └──clean / # тут будут храниться статьи после обработки
в папку data/raw сохраняются все статьи которые были получены за 1 запрос по вашим критериям. Им в качетсве имени присваивается текущее дата-время, ключевое слово и текущая страница.
88
+
в папку data/raw сохраняются все статьи которые были получены за 1 запрос по вашим критериям. Им в качестве имени присваивается текущее дата-время, ключевое слово и текущая страница.
86
89
в папку data/clean попадают все статьи которые имеют: автора, заголовок, описание 20+ символов и url ссылку. им присвается имя аналогичным способом что и в data/raw однако первым словом в имени является cleaned
0 commit comments