본문 바로가기

TIL/Python (w Numpy)

24.05.13 API호출

 

Today's Curriculum

  • 데이터 수집
    - api 요청: xml, json 형태로 테이터 가져오기
    - json 분석하기: json 내장 모듈 (json.loads, json.dump, json.load)
    - xml 분석하기: xml 내장 모듈, BeautifulSoup 모듈
  • 크롤링: requests, BeautifulSoup
  • 모듈
    - argparse
    - sys

API 요청(호출하기)

  • API(Application Programming Interface): 여러 프로그램과 데이터베이스, 그리고 기능들의 상호 통신 방법을 규정하고 도와주는 매개체.

JSON 구조

  • JSON은 JavaScript Object Notation의 약자로
    - 데이터를 구조화된 형태로 표현하는 포맷
    - 파이썬의 json 모듈은 JSON 데이터를 파싱하고 생성하는 기능을 제공하며, 데이터 교환과 저장에 널리 사용됨
  • 따라서 JSON 데이터는 다음과 같은 자바스크립트 객체 표기법에 따른 구조로 구성
    - JSON 데이터는 이름과 값의 쌍으로 이루어 짐
    - JSON 데이터는 쉼표(,)로 나열
    - 객체(object)는 중괄호({})로 둘러쌓아 표현
    - 배열(array)은 대괄호([])로 둘러쌓아 표현

xml 이란?

  • XML: Extensible Markup Language(XML)
  • XML을 사용하면 공유 가능한 방식으로 데이터를 정의하고 저장할 수 있음
  • XML은 웹 사이트, 데이터베이스 및 타사 애플리케이션과 같은 컴퓨터 시스템 간의 정보 교환을 지원
  • 예를 들어, 웹 서비스에서는 XML을 사용하여 데이터를 전송하고, 구조화된 문서를 생성할 수 있음.
  • 데이터베이스에서 데이터를 가져와 XML 형식으로 저장할 수 있음.
  • import xml.etree.ElementTree as ET
    - Python에서 ElementTree 모듈을 ET라는 닉네임으로 가져오는 것을 의미
    - 이 모듈은 XML 데이터를 파싱하고 조작하는 데 사용
    - ET를 통해 XML 요소를 생성하고 수정하며, XML 파일을 읽고 쓸 수 있음
  • ElementTree
    - ElementTree 모듈은 Python에서 XML 데이터를 파싱하고 조작하는 데 사용되는 기본적인 도구
    - XML을 트리 구조로 나타내고 XML 요소를 조작하는 데 필요한 기능을 제공
    - ElementTree 클래스는 XML 트리를 생성하고 조작하는 데 사용되며, Element 클래스는 XML 요소를 나타냄


  • root=ET.fromstring(xml_string)
    - ElementTree 모듈의 fromstring() 함수를 사용하여 XML 문자열을 파싱하여 XML 데이터를 Element 객체로 변환하는 것을 의미
    - 여기서 ETxml.etree.ElementTree 모듈을 import한 후 사용하는 별칭(alias)이며,
    - xml_string은 파싱할 XML 문자열을 나타냄.
    - 파싱된 XML의 최상위 요소인 루트 요소(root element)를
    root 변수에 할당하여 사용할 수 있음.
    - 이렇게 파싱된 XML 데이터를 효과적으로 조작하고 검색할 수 있습니다
  • fromstring() 
    - xml.etree.ElementTree 모듈에서 제공되며,
    - XML 문자열을 직접 파싱하여 해당 문자열에서 XML을 표현하는
    Element 객체로 변환함.
    - 이 함수는 파싱된 tree의 root element를 반환하며, 파싱된 XML을 쉽게 조작하고 검색할 수 있도록 함. 
  • for i, ele in enumerate(root.findall('./docs/doc')[::-1]):  
        for ele1 in ele.iter():
            print(f'{ele1.tag:20s}|{ele1.text}')
        print('-'*100)
        if i>1:
            break
      
    - root.findall('./docs/doc') : XML에서 './docs/doc' 경로에 해당하는 모든 요소를 찾겠다
    - liter(): 주어진 객체에 대한 반복자(iterator)를 반환. 이를 통해 객체의 요소를 하나씩 순회할 수 있음.
      e.g. 리스트나 튜플과 같은 iterable한 객체를 받아 해당 객체에 대한 반복자를 반환
  • from bs4 import BeautifulSoup
    - Python에서 Beautiful Soup 라이브러리를 사용하기 위해 필요한 코드
    - 이 코드는 Beautiful Soup 라이브러리에서 BeautifulSoup 클래스를 현재 작업 공간으로 가져오는 역할을 함
    - BeautifulSoup은 HTML 및 XML 문서를 파싱하고 분석하는 데 사용되는 강력한 라이브러리로, 웹 스크래핑 및 데이터 수집 작업에 자주 사용
  • for ele in soup.select('docs > doc')
    - Beautiful Soup에서 CSS 선택자를 사용하여 HTML 또는 XML 문서에서 특정 요소를 선택하는 것을 의미
    - 이 구문은
    soup 객체에서 docs라는 태그의 자식 요소인 doc 태그들을 선택하고, 각각을 ele 변수에 할당하여 순회(iterate) 함
  • data = json.loads(r.text)
    - Python에서 JSON 형식의 문자열을 Python 객체로 변환하는 역직렬화(deserialization)를 수행
    - 이 코드에서 r.text는 HTTP 응답의 텍스트 데이터를 나타내며,
    - json.loads() 함수를 사용하여 이를 Python 객체로 변환
    - 그 결 과로 변환된 객체는 data 변수에 할당 됨
  • yes24에서 정보가져오기 예제

 

느낌점

- 하나도 모르겠다

'TIL > Python (w Numpy)' 카테고리의 다른 글

24.05.14 Numpy & Pandas  (0) 2024.05.16
24.05.10 Python  (0) 2024.05.10
24.05.09 Python  (0) 2024.05.09
24.05.08 Python  (0) 2024.05.08
24.05.07 Python  (0) 2024.05.07