Skip to content

Commit aed0250

Browse files
committed
README fix
1 parent 991be39 commit aed0250

2 files changed

Lines changed: 20 additions & 16 deletions

File tree

README.md

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
11
# NEWS_API_ETL_Project
22

33
### Цель
4-
обрабатывать из внешенго Api новости и используя принцип ETL сохранять нужные новости в базу данных.
4+
Обрабатывать из внешнего API новости и используя принцип ETL сохранять нужные новости в базу данных.
55

66
### Стек
7-
Extract: requests(страна, категоия, ключевое слово, размер страницы (опционально)) -> сохранение статей в папку data/raw
7+
Extract: requests(страна, категория, ключевое слово, размер страницы (опционально)) -> сохранение статей в папку data/raw
88

9-
Transform: Python скрипт читает данные из нового файла data/raw, смотрит чтобы были указаны: автор, заголовок, описание не меньше 20 символов, url ссылка
9+
Transform: Python скрипт читает данные из нового файла data/raw, проверяет чтобы были указаны: автор, заголовок, описание не меньше 20 символов, url ссылка
1010

11-
Load: psycopg2 подключается к PostgreSQL, перед вставкой разрешается конфлик с уникальной url ссылкой. Если такая ссылка уже есть то новость не добавляется в таблицу
11+
Load: psycopg2 подключается к PostgreSQL, перед вставкой разрешается конфликт с уникальной url ссылкой. Если такая ссылка уже есть то новость не добавляется в таблицу
1212

13-
db: создается база данных и таблица если их еще нет. url присваивается UNICE
13+
db: создается база данных и таблица если их еще нет. url присваивается UNIQUE
1414

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)
1616

1717
### Схема ETL
18-
top-headlines из NewsApi (extract) -> Филтр на наличие автора, заголовка, описания не меньше 20 символов, наличие url (transform) -> загрузка статей чей url отстуствует в базе данных (load)
18+
top-headlines из NewsApi (extract) -> Филтр на наличие автора, заголовка, описания не меньше 20 символов, наличие url (transform) -> загрузка статей чей url отсутствует в базе данных (load)
1919

20-
### Стуктура папок
20+
### Структура папок
2121
```text
2222
project/
2323
├── config
2424
| └── config.py
2525
├── data /
26-
| ├──raw / # тут будут хранится статьи до обработки в формате json
27-
| └──clean / # тут будут хранится статьи после обработки
26+
| ├──raw / # тут будут храниться статьи до обработки в формате json
27+
| └──clean / # тут будут храниться статьи после обработки
2828
├── notebooks /
2929
| └── 01_eda.ipynb
3030
├── src /
@@ -39,7 +39,7 @@ project/
3939
```
4040

4141
### Порядок запуска
42-
#### склонировать репу
42+
#### склонировать репозиторий
4343
```bash
4444
git clone [сслыка на репозиторий]
4545
```
@@ -51,23 +51,26 @@ cd <repo_name>
5151
#### создать виртуальное окружение
5252
```bash
5353
py -m venv .venv
54-
54+
```
55+
после чего
56+
```bash
5557
.venv\Scripts\Activate.ps1
5658
```
59+
5760
#### установить библиотеки
5861
``` bash
5962
pip install -r requirements.txt
6063
```
6164

6265
#### скопировать .env.exsample
6366
``` bash
64-
copy .env.exsample .env
67+
copy .env.example .env
6568
```
6669
Заполнить .env вашими данными
6770

6871
#### запустить код
6972
```bash
70-
python main.py --keyword your_key_word --category your_category --limit your_limit_of_articles --page_size your_page_size
73+
python main.py --keyword your_key_word --category your_category --limit your_articles_limit --page_size your_page_size
7174
```
7275

7376
### пример .env
@@ -82,5 +85,5 @@ NEWSAPI_KEY =your_key
8285
```
8386

8487
### Важные моменты
85-
в папку data/raw сохраняются все статьи которые были получены за 1 запрос по вашим критериям. Им в качетсве имени присваивается текущее дата-время, ключевое слово и текущая страница.
88+
в папку data/raw сохраняются все статьи которые были получены за 1 запрос по вашим критериям. Им в качестве имени присваивается текущее дата-время, ключевое слово и текущая страница.
8689
в папку data/clean попадают все статьи которые имеют: автора, заголовок, описание 20+ символов и url ссылку. им присвается имя аналогичным способом что и в data/raw однако первым словом в имени является cleaned

src/extract.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@ def make_extract(category: str, key_word: str, page: int = 1, page_size: int = 1
3434
}
3535
try:
3636
data = r.get(settings.NEWS_URL, params=params, timeout=15)
37+
data.raise_for_status()
3738
payload = data.json()
38-
logger.info(f"raise of status: {data.raise_for_status()}")
39+
logger.info(f"raise of status: {data.status_code}")
3940
payload["fetched_at"] = datetime.now().isoformat()
4041
payload["country"] = settings.COUNTRY
4142
payload["category"] = category

0 commit comments

Comments
 (0)