api 서버에서 데이터 추출부터 분석을 하기위해 전처리 하는 과정에서 겪는 사소한 장애물들과 해결책을 기록해보려 한다.
import pandas
df = pd.read_csv('item_list1.csv', encoding='cp949') # csv파일 인코딩
df.head()
urllib 라이브러리의 parse.quote()
를 사용하면 된다.
import urllib
from urllib import parse
parse.quote()
내가 사용한 방법, 뭔가 이상한 걸 알지만 아직은 왜 아래의 반복문을 썼을때 값이 이상하게 들어가고, 어떻게 해야 깔끔하게 넣을 수 있는 지는 모르겠다. 그치만 어쨌튼 원했던 결과를 얻을 수 있는 코드니까 기록
내가 원하는 값의 요청주소를 한 곳에 모으기 위해서, 단순하게 텍스트 사이에 +itemUrl+
를 집어넣어주면 된다.
api = 'https://api.neople.co.kr/df/items?itemName='+itemUrl+'&wordType=<wordType>&hashtag='+hashtagUrl+',<hashtag>&q=minLevel:<minLevel>,maxLevel:<maxLevel>,rarity:<rarity>&limit=<limit>&apikey=lpxl9qTO4rIgZIVSczjFyChj8rLaoGR2'
df_item['api']= api
df_item.head()
api 요청 값을 텍스트로 변환해준뒤 .append
를 이용하여 미리 만들어 놓은 리스트에 다 넣어 주면 된다.
total = []
for i in api:
k = requests.get(i).text
total.append(k)
print(total)
조금은 단순하게 error
가 아닌 rows
로 시작되는 데이터만 가져오기 위해서 {"rows"
로 시작하는 데이터를 3번째 글자가 r로 시작하는 데이터를 가져오라는 방식으로 에러 값을 제거했다.
# rows로 시작하는 값 가져오기 (에러제거)
itemId = []
for i in total:
if i[2] == 'r':
itemId.append(i)
print(itemId)
ast
라이브러리를 이용해서 str를 json값으로 변환할 수 있다. 에러 값을 제거하는 방식과 비슷한 방식으로 모든 데이터를 이 방식으로 할 수는 없겠지만, api데이터를 가져올때 유용하게 쓰였던 함수.
리스트 안에 복잡하게 이중 으로 딕셔너리 값이 들어가 있을때 추출할 수 있는 방법.
개인적으로 내가 이 코드를 직접 만들어서 원하는 결과 값을 도출했다는 것에 엄청나게 뿌듯함을 느꼈던 순간이였다.
데이터 원본 생김새
리스트 안에 딕셔너리 안에 리스트... 맞나?
크....이걸 내 손으로 해내다니..!!!
내가 성장하고 있다는 걸 확실하게 느낀 뿌듯한 주말이였다.