본문 바로가기
코딩 어쩌구/Data

[edwith] 파이썬을 이용한 웹 스크래핑 (2)

by annmunju 2021. 5. 3.

제 13 장 웹서비스 사용하기

 

제 0 절 마크업 언어

- 다양한 언어(PHP, 파이썬, 자바, 자바스크립트 등)로 네트워크를 통해 정보 전달을 하기 위해 와이어 프로토콜(중간단계)를 거치게 됨.

- 대표적으로 활용되는 언어는 XML, JSON

 

제 1 절 XML (eXtensible Markup Language)

: HTML보다 구조화된 XML

- 시작태그<~> / 끝 태그</~>

- 문자정보 

- 속성 : type="intl"

- 스스로 닫는 태그 <email ... />

- 공백은 의미 없음 (가독성 높이기 위해 사용하는 것 뿐)

 

 

제 2 절 XML 파싱

- fromstring : XML 문자열 표현을 XML 노드 '나무'로 변환한다.

- find : XML 나무를 훑어서 특정 태그와 매칭되는 노드를 검색한다. 각 노드는 텍스트, 속성, 자식노드로 구성된다. 각 노드는 노드 나무의 최상단이 될 수 있다.

- ElementTree 같은 XML 파서를 사용하는 것은 장점이 있다. XML은 규칙이 많고, 구문 규칙에 얽매이지 않고 ElementTree를 사용해 XML에서 데이터를 추출할 수 있다.

 

제 3 절 노드 반복하기

- 종종 XML이 다중 노드를 가지고 있어서 모든 노드를 처리하는 루프를 작성할 필요가 있다. 

import xml.etree.ElementTree as ET

input='''
<stuff>
  <users>
    <user x="2">
      <id>001</id>
      <name>Chuck</name>
    </user>
    <user x="7">
      <id>009</id>
      <name>Brent</name>
    </user>
  </users>
</stuff>'''

stuff = ET.fromstring(input)
lst = stuff.findall('users/user') #findall 파이썬 리스트의 하위 나무 가져옴
print ("User count:", len(lst))

for item in lst:
  print("Name", item.find("name").text)
  print("Id", item.find("id").text)
  print("Attribute", item.get("x"))
  
# User count: 2
# Name Chuck
# Id 001
# Attribute 2
# Name Brent
# Id 009
# Attribute 7

 

+ XSD XML 스키마 (W3C spec) : XML 스키마 = 올바른 형식에 대한 설명, 약속 (개요?, 조건?으로 봐도 될까)

 > 제한을 주기도하고, 데이터 타입을 알려주기도 하고..

 

 

제 4 절 JSON(JavaScript Object Notation)

 

제 5 절 JSON 파싱하기

- 딕셔너리(객체)와 리스트를 중첩함으로써 JSON 생성. 

- 내장된 json 라이브러리를 사용해 JSON을 파싱해 데이터를 읽어온다.

import json

input = '''
[
  { "id" : "001", 
  "x" : "2",
  "name" : "Chuck"
  },
  { "id" : "009",
  "x" : "7",
  "name" : "Chuck"
  }
]'''

info = json.loads(input)
print ("User count:", len(info))

for item in info:
  print("Name",item['name'])
  print("Id",item['id'])
  print("Attrubute", item['x'])

 

제 6 절 API(Application Program Interfaces, 응용 프로그램 인터페이스)

- 대부분 대형 웹 애플리케이션은 서비스를 이용함. 다른 애플리케이션으로부터 서비스를 이용하기도 함. 이에 따른 규칙을 만듦(API)

- HTTP으로 응용프로그램간에 데이터를 교환할 수 있게 되었다. 

- API를 사용할 때 다른 응용프로그램에서 사용할 수 있는 가능한 서비스 집합을 생성한다. 다른 프로그램이 서비스에 접근하여 사용할 때 지켜야하는 API(규칙)도 게시한다.

- 응용프로그램이 웹상에 이용가능한 API로 서비스 집합을 만들 때, 웹서비스 라고 부른다.

 

제 7 절 구글 지오코딩 웹서비스

 

제 8 절 보안과 API 사용 

- 상용업체 API를 사용하기 위해 API키가 일반적으로 필요.

 

제 9 절 용어정리

API: 응용 프로그램 인터페이스(Application Program Interface) - 두 응용 프 로그램 컴포넌트 간에 상호작용하는 패턴을 정의하는 응용 프로그램 간의 계약.

ElementTree: XML데이터를 파싱하는데 사용되는 파이썬 내장 라이브러리.

JSON: JavaScript Object Notation- 자바스크립트 객체(JavaScript Objects) 구문을 기반으로 구조화된 데이터 마크업(markup)을 허용하는 형식.

REST: REpresentational State Transfer - HTTP 프로토콜을 사용하여 응용 프로그램 내부에 자원에 접근을 제공하는 일종의 웹서비스 스타일.

SOA: 서비스 지향 아키텍처(Service Oriented Architecture) - 응용 프로그램 이 네트워크에 연결된 컴포넌트로 구성될 때.

XML: 확장 마크업 언어(eXtensible Markup Language) - 구조화된 데이터의 마크업을 허용하는 형식

 


 

728x90