티스토리 뷰

1. requests란?

- Python에서 HTTP 요청을 쉽게 보낼 수 있도록 도와주는 라이브러리

- 웹 페이지에서 데이터를 가져오거나 API와 통신할 때 사용

 

2. API란?

- 프로그램 간 데이터를 주고받을 수 있도록 규칙을 정해놓은 인터페이스

 

3. 인터페이스란?

- 서로 다른 시스템, 소프트웨어, 또는 하드웨어가 소통할 수 있도록 규칙을 정해놓은 것

 

4. HTTP 요청이란?

- 클라이언트(사용자)가 서버(웹사이트, API)에 데이터를 요청하는 방식

- GET, POST, PUT(PETCH-기존 것을 수정), DELETE

* 자바스크립트 fetch는 어디서 가져오는 것

 

5. 크롤링이란?

- 웹사이트에서 자동으로 데이터를 수집하는 과정

- requests 등

 

6. 스크래핑이란?

- 크롤링한 데이터에서 필요한 정보만 추출하는 과정

- beautifulsoup 등

 

7. 파싱이란?

- 데이터를 특정한 구조로 분석하고 변환하는 과정, 데이터를 이해할 수 있는 형태로 분석

- beautifulsoup 은 HTML을 파싱한 후 특정 태그를 선택(스크래핑)

 

8. 동적 크롤링이란?

- Javascript가 실행된후의 웹페이지에서 데이터를 가져오는 크롤링 방식

 

9. 정적 크롤링이란?

- 서버에서 반환된HTML 코드만 가져오는 크롤링 방식

 

10. selenium이란?

- 웹 브라우저를 자동화하는 라이브러리(사람이 브라우저에서 하는 행동을 코드로 자동 수행)

 

11. 크롤링 시 태그 클래스 이름이 계속 바뀐다면?

1) 태그의 구조가 규칙적이면 클래스 없이 찾기

soup.select('div > span:nth-of-type(2)')

#  div 태그 아래의 span 태그 중 2번째 요소를 선택
------------------------------------------
<div>
  <span>첫 번째</span>
  <span>두 번째</span> <!-- 이걸 선택 -->
  <span>세 번째</span>
</div>

2) 고정된 글자(레이블)을 기준으로 찾기

soup.find('span', string='가격').find_next('span').text

3) 클래스 이름 중 고정된 부분만 사용하기(부분 일치)

soup.select("[class*=price]") 

# 클래스 이름 중 고정된 부분만 사용(클래스명에 'price' 포함)

4) XPath 활용(Selenium일 경우) 

driver.find_element(By.XPATH, "//span[contains(text(),'가격')]")

# '가격'이라는 텍스트가 포함된 span 태그를 찾아라

 

12. 프로토콜

- 어떻게 데이터를 주고받을지에 대한 약속

- 통신할 때 지켜야 할 규칙

- 예: HTTP, FTP, TCP/IP

- 예: HTTP는 웹에서 데이터를 주고 받는 프로토콜

 

13. 인터페이스

- 서로 다른 두 대상이 만나는 연결 지점

- 연결 부분에서 서로 상호작용하는 수단

- API, USB, UI

- 예: API는 HTTP 프로토콜을 사용하여 데이터를 주고받을 수 있게 만들어 놓은 인터페이스

- 예: 한국인과 미국인이 전화로 대화한다고 할때, 사용하는 언어(한국어/영어)가 프로토콜, 대화를 주고받는 수단인 전화기가 인터페이스

 

14. docker란?

- 애플리케이션을 컨테이너라는 독립된 공간에 묶어서 쉽게 배포, 실행할 수 있게 만든 기술

- 장점: 어디서나 같은 환경에서 실행 가능(개발 → 운영 환경 통일), 빠르고 가벼운 배포, 환경 구성 시간 단축(의존성 충돌 방지)

- 컨테이너: 애플리케이션과 그 실행환경을 독립된 공간으로 패키징한 것

- 이미지: 컨테이너 실행을 위한 템플릿

- Dockerfile: 이미지를 만드는 설명서(레시피)

 

15. httpx란?

- python에서 사용하는 http요청 라이브러리

- requests의 업그레이드 버전(비동기 지원, HTTP/2지원, 속도가 빠르고 가볍다)

 

16. 비동기란?

- 한 개의 스레드 안에서 여러 작업을 빠르게 번갈아 수행하는 방식(대기시간 활용)

- 동시 실행(병렬 처리-멀티스레드, 멀티 프로세스)은 아님, 기다리는 동안 다른 작업을 실행해 동시처럼 보일 뿐

 

17. 동기란?

- 작업을 순차적으로 처리하는 방식, 하나의 작업이 끝날 때까지 기다린 후 다음 작업을 실행

 

18. HTTP/2

- 멀티플렉싱,하나의 연결 내에서 여러 요청을 잘게 쪼개서 빠르게 번갈아 보냄(네트워크 TCP 통신)

* 비동기랑 비슷해보이나 비동기는 코드 작업 처리 방식을 설계하는 방식이고, HTTP/2 멀티플렉싱은 데이터를 보내는 방식

 

19. Redis란?

- 메모리 기반의 초고속 NoSQL 데이터 베이스

- Key-Value 구조로 데이터를 저장

- 캐싱, 세션관리, 실시간 데이터 처리에 최적화됨

 

20. crewai란?

- 여러 개의 AI 에이전트를 협력해서 작업하도록 만드는 프레임 워크

 

21. 에이전트란?

- 특정 목표를 수행하는 자율적인 프로그램 또는 AI 시스템

 

22. 벡터DB란?

- 고차원 벡터(숫자 배열)로 저장된 데이터를 빠르게 검색하는 데이터베이스

- FAISS, Pinecone, Weaviate, Milvus

 

23. 벡터임베딩이란?

-  데이터를 고차원 벡터(숫자 배열)로 변환하는 과정

 

24. RAG란?

- 정보 검색 + 생성 모델을 결합한 AI 방식 (검색, 보강, 생성)

- 외부 데이터베이스(벡터 DB)에서 관련 정보를 검색, 검색된 정보를 LLM 입력으로 추가, LLM이 검색된 정보를 활용해 답변 생성

 

25. FastAPI란?

- python 기반의 빠르고 간단한 웹 API 프레임워크(비동기 지원, 자동 문서 생성, 타입 검증-pydantic, 간결한 코드)

 

26. Pydantic이란?

- Python 데이터 검증 및 직렬화 라이브러리(타입 검증, 자동 변환(문자열을 숫자로), 데이터 직렬화(Json 변환), BaseModel

 

27. BaseModel이란?

- python 객체를 Json처럼 다루면서 타입 검증을 수행하는 모델

* 웹 API에서 데이터를 주고받을 때 Json이 표준이기 때문

 

28. python이란?

- 문법이 간결하고 직관적, 광범위한 라이브러리 지원(데이터분석, 웹개발, AI 등), 인터프리터 언어로 코드 실행이 빠르고 유연함, 멀티패러다임 지원(객체지향, 절차적, 함수형 프로그래밍 가능)

 

29. MySQL이란?

- 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)

 

30. Nginx란?

- 높은 성능과 확장성을 갖춘 오픈 소스 웹 서버이자, 리버스 프록시 서버

- 비동기 이벤트 기반, 고성능, 매우빠름

 

31. 웹서버란?

- 클라이언트(브라우저)의 HTTP 요청을 처리하고 응답을 반환하는 서버

 

32. 리버스 프록시 서버란?

- 클라이언트 요청을 벡엔드 서버로 전달하고 응답을 반환하는 서버

- 로드 밸런싱(여러 서버로 트래픽 분산), 보안 강화(직접적인 서버 노출 ㅂ아지), 캐싱(요청된 데이터를 저장하여 속도 향상),SSL/TLS(처리): HTTPS 통신을 프록시 서버에서 담당

 

33. Apache 란?

- Apache HTTP Server는 가장 널리 사용되는 오픈 소스 웹 서버 중 하나로, 동적 및 정적 콘텐츠를 처리하는 기능을 제공

- 멀티스레드 기반으로, 동적 콘텐츠 처리에 강점이 있다.(php 기반 서비스)

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함