티스토리 api를 사용하여 자동 글쓰기 하는 프로그램을 파이썬으로 만들고 있었다.
post 타입으로 요청을 보내서 아무튼 응답을 받으면 아래와 같이 xml 타입으로 받는다.
아래에 있는 글을 json으로 변환해 보려 한다.
<tistory><status>200</status><postId>186</postId><url>https://hellodoor.tistory.com/186</url></tistory>
status 200은 성공
postId는 186
나는 여기서 postId값이 필요하다.
문자열을 postId기준으로 뭐 잘라서 값을 가져올 수도 있고 다른 방법도 있겠지만 다루기 쉬운 json 타입으로 변환하려 한다.
아 그리고 몰랐던 건데 파이썬에선 dictionary 타입으로 부른 것을 알았다. json 처럼 key value로 이루어져 있고 형태도 거의 비슷한데 dictionary라고 한단다.
뭐 아무튼 일단 코드로 보자면
import xmltodict
xmltodict이란 모듈을 import 해야한다.
xml to dictionary 인 듯 하다. 명령 프롬프트(cmd)에서 pip install xmltodict 명령어를 입력해줘야 한다.
$ pip install xmltodict 혹은 $ conda install xmltodict (아나콘다로 파이썬을 설치했을 경우)
1
2
3
4
5
6
7
8
9
10
|
response = requests.post(url, params=param)
xmlData = response.text
jsonStr = json.dumps(xmltodict.parse(xmlData), indent=4)
dict = json.loads(jsonStr)
print(dict['tistory'])
print(dict['tistory']['postId'])
|
cs |
line3 : response.text 에 원하는 데이터가 xml 형식으로 담겨 있다.
line5 : json.dumps(xmltodict.parse() xml을 json으로 변환한다. parse()에 xml을 집어넣는다.
line7 : json.loads() 함수에 json으로 변환한 값을 넣어 줘야 9행이나 10행처럼 key 값으로 접근이 가능하다.
7행을 생략하면
string indices must be integers 이런 에러가 뜬다. 문자로 접근하지 않을거면 json을 쓰는 이유가 거의 없다.
3행에서 xml 파일을 읽어와서 넣어도 된다. indent=4를 적어 print() 했을 때 보기 좋게 할 수 있다. 사실 뭐 안해도 무방.
5행에서 아래 출력문이 indent=4를 넣은 값이고 위는 생략한 것이다. 보기 편하게 하는 것 뿐이다.
자바 스크립트에선 json data를 사용할 때 json.key 이런식으로 .뒤에 key 값을 입력하여 사용하곤 한다. (객체)
python 에서는 dictionary["key"] 이렇게 배열처럼 접근하여 사용한다.
아무튼 변환을 마치고
print(dict['tistory'])
print(dict['tistory']['postId'])
로 출력해서 원하는 186을 추출할 수 있었다. url이 필요하면 dict['tistory']['url'] 해도 된다.
'프로그래밍 > 파이썬(python)' 카테고리의 다른 글
[파이썬]~ 아나콘다 설치 Python Anaconda Start! (0) | 2021.01.31 |
---|
댓글