import request
import json
import csv
champlist = [150, 39, 136, 145, 202, 266, 268, 164, 131, 245]
f = open('output.csv', 'w', encoding='utf-8', newline='') ##파일 열기
wr = csv.writer(f) ##열린 파일 쓰기
for number in champlist:
a = requests.get(
f"""http://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/ko_kr/v1/champions/{number}.json"""
) ##챔피언 id를 f-string으로된 url에 삽입하여 각 챔피언의 정보를 불러옴.
b = a.json() ##불러온 정보를 json화
wr.writerow([
b["id"],
b["name"],
b["alias"],
b["title"],
b["shortBio"],
b["passive"]["name"],
b["passive"]["description"],
b["spells"][0]["name"],
b["spells"][0]["description"],
b["spells"][1]["name"],
b["spells"][1]["description"],
b["spells"][2]["name"],
b["spells"][2]["description"],
b["spells"][3]["name"],
b["spells"][3]["description"],
]) ##writerow 메소드를 사용하여 필요한 정보를 입력
f.close()
정상적으로 내가 원하는 정보가 크롤링 되었다면 아마도 내가 파이썬 파일을 실행시킨 폴더에 output.csv라는 파일이 생성되었을 것이다.
이 파일을 구글csv로 열어보면 다음과 같이 엑셀에서 보기좋게 열린다.
위 사진에 보이는 정보는 lol 소환사의 협곡 게임에서 쓰이는 소환사주문의 정보가 담긴 Google Spreadsheet이다
이 정보들을 파일 -> 다운로드 -> .csv
를 선택하여 컴퓨터로 다운로드한다.
다운로드 한 파일을 db로 밀어넣을 프로젝트의 최상위 디렉토리에 위치시킨다.
필요한 모듈을 임포트한다. django ORM을 사용해야하기 때문에 그와 과련된 모듈도 임포트해야한다.
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'winforgg.settings')
import csv
import django
django.setup()
from spells.models import Spell
f = open('spells.csv', 'r', encoding='utf-8')
reader = csv.reader(f)
for row in reader:
spell_name, spell_img_src, riot_spell_id, spell_desc = row
tuple = (spell_name, spell_img_src, riot_spell_id, spell_desc)
info.append(tuple)
f.close()
instances = []
for (spell_name, spell_img_src, riot_spell_id, spell_desc) in info:
instances.append(
Spell(
spell_name = spell_name,
spell_img_src = spell_img_src,
riot_spell_id = int(riot_spell_id),
spell_desc = spell_desc,
)
)
Spell.objects.bulk_create(instances)