data handling

이상해씨·2023년 4월 14일
0

AI 기초

목록 보기
13/15
  • CSS
  • Html
  • XML
  • JSON

1. CSS(comma separate value)

  • 쉽표로 데이터를 구분한 텍스트 파일
    -엑셀 데이터를 응용프로그램에 제약 받지 않고 사용하기 위한 데이터 형식
  • 탭(TSV), 빈칸(SSV)으로 구분하기도 함

1-1. 파이썬과 csv 파일

  • 텍스트 파일 처럼 한줄씩 데이터를 처리
  • 쉽표 전처리해야 함
  • CSV 객체 제공
import csv
reader =csv.reader f,
		delimiter =','. quotechar='"'.
        quotating= csv.QUOTE_ALL)
  • parameter
  1. delimiter : 문자열을 나누는 기준
  2. lineterminator : 줄바꿈 기준
  3. quotechar : 하나의 문자열이라고 알려주는 문자
  4. quoting : quotation level 지정
  • 한글을 처리하 는 모듈 필요.
  • encoding read : window일 경우 cp949, utf8
  • write : utf8
  • parameter 설정이 애매하면 모든 것은 ''으로 설정하는 것도 괜찮다.

2. HTML

  • 웹(www world wide web)

  • 과거에는 HTTP, 포로토콜로 송수신함
    요청 -> 처리 ->응답( HTML, XML 등의 결과로 반환) -> 렌더링( HTML, XML 표시 및 다운로드)

  • 웹은 텍스트(HTML) 덩어리

  • 웹의 정보를 구조적으로 표현하기 위해 사용(트리형태)

  • tag/ 꺾쇠 사용

  • 웹 브라우저가 TEML 소스파일을 다운로드 및 해석 표시하여 사용자가 화면을 확인할 수 있음

2-1. HTML 규칙을 분석하여 데이터 수집하는 방법

1) str
2) 정규식(regex, regular expression)
3) beautifulsoup

  • HTML 구조: html - head- title -body-p

2) 정규식

  • 정규표현식
  • 문자 표현 공식으로 문자열 패턴을 정의
  • 전화번호, 주민등록번호, IP
  • 정규식을 이용하여 데이터 추출 용이

2-1) 정규식 팁(tip)

  • 정규식연습장 (www.regexr.com/)
  • 정규식은 방대하여 그때그때 찾아서 학습하는 것이 좋음
  • [] : 문자열 범위
    • : 부터 까지 (~)
  • {} : 몇번 반복되는 지
    ex) [0-9]{2} : 0부터 9가 2번 반복된다.

파이썬에서의 정규식

  • import re 하여 모듈실행
  • 함수
    1. search - 한개 찾기
    2. find all - 전체 다 찾기
  • 추출된 문자열은 tuple 형태로 반환됨

urllib

import urllib.request 

url= "www.~~.com"
#읽어오길 원하는 url 입력
html= urllib.request.urlopen(url) 
# url 링크에 접속
contents= str(html.read()) 
# 해당 링크의 컨텐츠를 읽는다.
find_result= re.findall(r"([A-Z])",contents)
# 정규식에 일치하는 문자열을 찾아 튜플 형태(tuple)로 반환

파이썬에서의 html 정규식

<dl class = "blind">
  <dt> 무슨 정보 </dt>
  <dd> 내용 </dd>
  <dd> 내용 </dd>
  <dd> 내용 </dd>
</dl>

# html 에서 정보 추출하기
# 1) <dl class ="blind"> ~ </dl> 구조 확인
# 2) 위 구조에서 <dd> ~ </dd> 정보 추출

파이썬에서 html 정규식을 이용하여 추출하는 코드

import urllib.request 
impot re 

url= "www.~~.com"
#읽어오길 원하는 url 입력
html= urllib.request.urlopen(url) 
# url 링크에 접속
contents= str(html.read().decode("ms949"))
# 해당 링크의 컨텐츠를 읽는다.



find_result= re.findall("(\<dl class =\"bline\"\>)(\<\dl\>)",contents)
# finall 안의 정규식은 html의 구조를 보고 작성하기 
result_content_1= find_result[0]
# 1번째 패턴 추출 
result_content_2= find_result[1]


# 정규식에 일치하는 문자열을 찾아 튜플 형태(tuple)로 반환

3. XML(eXtensible Markup Language)

  • 데이터 구조와 의미를 tag(markup)을 사용하여 표현하는 언어
  • TAG 사이에 정보
  • HTML과 흡사
  • 이기종(서로 다른 기기) 간의 송수신이 유용
  • 트리구조를 따름.

파싱

  • 정규표현식으로 파싱가능
  • beautifulsoup를 주로 이용하여 파싱(HTMl, XML 파싱할 때 사용하는 대표적인 도구)

beautifulsoup 모듈

# 모듈 
from bs4 import BeautifulSoup

# 객체 만들기 
soup= BeautifulSoup(xml, "lxml")

#final_all 함수로 tag 검색
soup.find_all("id")
 

4. JSON

  • JavaScript Object Notaion
  • JavaScript의 객체표현 방식
  • 간결하고 코드로 전환이 용이
  • dict type을 전환할 수 있다.

파이썬에서의 JSON

  • json 모듈
  • dict type과 호환
  • API는 대부분 JSON 형태 (develper API 참고)
import json
#json 파일읽는 코드 추가
with open("data.json","r", encoding ="utf8") as f:
	contents=f.read()
	js_data=json.loads(contents)
import json
dict= {'name': 'JS', 'type': 'json'}

with open("js_data.json","w") as f:
	json.dump(dic_js,f)


참고

profile
공부에는 끝이 없다

0개의 댓글