필요한 데이터 모으기(1)학부공부/빅데이터기술_프로젝트2019. 4. 27. 22:23
Table of Contents
반응형
먼저, Steamspy_api를 사용해서 필요한 데이터를 모아보겠다.
코드를 통해서 Steamspy_data를 어떻게 얻어 오는지 알아본다.
import urllib.parse
import requests
import pandas as pd
# Steamspy API Get
main_api = "http://steamspy.com/api.php?request=tag&tag"
Searching_tags = "http://steamspy.com/api.php?request=appdetails&appid="
필요한 library와 두개의 api를 사용해서 필요한 데이터를 얻어올 것이다.
Userinput = ['SINGLE',
'MULTI',
'COOP',
'MMO',
'ISFREE',
'FREETOPLAY',
'PURCHASEAVAIL',
'CASUAL',
'DARK',
'CUTE',
'MUSIC',
'HUMOR',
'COMEDY',
'HORROR',
'STORYRICH',
'RELAXING',
'GORE',
'SURVIVE',
'STRATGY',
'PUZZLE',
'SCI-FI',
'FANTASY',
'ACTION',
'VIOLENT',
'SHOOTER',
'SPORT',
'RACING',
'FARM',
'SIMULATION',
'BUILDING'
]
위 부분은 태그의 종류이다. 이 태그를 기반으로 각각의 game의 API_ID를 얻어와서
API_ID에 해당하는 게임의 상세한 정보를 가져올 것이다.
for count in range(0,len(Userinput)):
# 위에서 선언해준 배열값의 길이만큼 돌림
url = main_api + urllib.parse.urlencode({'=':Userinput[count]})
# url 요청을 json 형태로 받아온다 .
json_data = requests.get(url).json()
# 받아온 json 데이터가 이중 딕셔너리 형태이고 , 가져온 키값들이 규칙적인게 아니라
# 특정 appid 를 가지고 있다 . 그렇기 때문에 , key값만 빼서 따로 keys라는 변수에 저장시켜준다.
keys = [key for key in json_data]
# 특정 태그에 해당하는 특정 appid를 기반으로 다시 api 사용해서 appid에 해당하는 language + tags를 가져온다.
# decode 사용 필요 x , 숫자를 변수로 받기 때문에 , parse 필요없이 그냥 사용
data_1 = []
for Count in range(0,len(json_data)-4900):
url2 = Searching_tags + str(keys[Count])
json_data2 = requests.get(url2).json()
# 태그에 해당하는 key 값을 따로 가져온다 .
keys2 = [key for key in json_data2['tags']]
print("==============="+Userinput[count]+"================")
print("game_appid : " + keys[Count])
print("================================")
print("game_name : " + json_data[keys[Count]]['name'])
print("================================")
print("game_positive : " + str(json_data[keys[Count]]['positive']))
print("================================")
print("game_negative : " + str(json_data[keys[Count]]['negative']))
print("================================")
print("game_price : " + str(json_data[keys[Count]]['price']))
print("================================")
print("game_initialprice : " + str(json_data[keys[Count]]['initialprice']))
print("================================")
print("game_owners : " + str(json_data[keys[Count]]['owners']))
print("================================")
print("game_average_forever : " + str(json_data[keys[Count]]['average_forever']))
print("================================")
print("game_average_2weeks : " + str(json_data[keys[Count]]['average_2weeks']))
print("================================")
print("game_median_forever : " + str(json_data[keys[Count]]['median_forever']))
print("================================")
print("game_median_2weeks : " + str(json_data[keys[Count]]['median_2weeks']))
print("================================")
print("game_All_tags : " + str(json_data2['tags']))
print("================================")
print("game_languages : " + str(json_data2['languages']))
print(keys2)
# data 집합
#data =[['game_name','game_score_rank','game_userscore','game_owners','game_All_tags','game_languages'],
#[json_data[keys[Count]]['name'],json_data[keys[Count]]['score_rank'],json_data[keys[Count]]['userscore'],
# json_data[keys[Count]]['owners'],json_data2['tags'],json_data2['languages']]]
data_1.insert(Count,
[json_data[keys[Count]]['name'],
json_data[keys[Count]]['owners'],
json_data[keys[Count]]['price'],
json_data[keys[Count]]['initialprice'],
json_data[keys[Count]]['positive'],
json_data[keys[Count]]['negative'],
json_data[keys[Count]]['average_forever'],
json_data[keys[Count]]['average_2weeks'],
json_data[keys[Count]]['median_forever'],
json_data[keys[Count]]['median_2weeks'],
# json_data2['tags'],
keys2,
json_data2['languages']])
# 여기서 tags 는 딕셔너리 형태로 값이 넘어오게 된다 . 이 때 이 값들을 정제해줄 필요가 있다 .
# Dataframe 생성 및 csv 파일 생성
df = pd.DataFrame(data_1,columns=['game_name','game_owners','game_price','game_initialprice','game_positive','game_negative','game_average_forever','game_average_2weeks','game_median_forever','game_median_2weeks','game_All_tags','game_languages'])
df.to_excel("C:/Users/user/Desktop/4학년/빅데이터기술/Steamapi_dataset/"+Userinput[count]+".xlsx",sheet_name = 'Data')
del data_1
위 부분은 이중 for문을 돌려서 , 게임의 name,tag,owners...등등 가져온뒤에
DataFrame으로 만들어서 사용자의 PC에 xlsx파일로 저장시킨다.
결과화면
위 결과를 통해서 , Steamapi에서 필요한 정보는 다 가져왔다.
이제 Metacritic의 user점수와 전문가점수를 가져오면 되겠다.
반응형
'학부공부 > 빅데이터기술_프로젝트' 카테고리의 다른 글
데이터 모으기(4) (0) | 2019.05.05 |
---|---|
HTTP Error 403: Forbidden (0) | 2019.05.05 |
데이터 모으기(3) (0) | 2019.05.01 |
데이터 모으기(2) (0) | 2019.04.29 |
machine_learning_project (0) | 2019.04.27 |
@IT grow. :: IT grow.
#IT #먹방 #전자기기 #일상
#개발 #일상