티스토리 뷰

문제주소 : https://askdjango.github.io/lv2/

import requests 
import json
#from bs4 import BeautifulSoup
from requests.api import request

#lv2는 ajax . 비동기 방식이기 때문에 일반적으로 json파일 안에 데이터더미가 들어있다.
url = 'https://askdjango.github.io/lv2/data.json'



#해당 json파일을 text화
response = requests.get(url).text

#json loader로 해당 text를 우리가 확일 할 수 있는 값으로 변경
data_list = json.loads(response)

#출력 
print(data_list)

출력결과 

{'s2': [{'name': '장고 2.0 주요 변경내역 살펴보기', 'url': 'https://www.askcompany.kr/r/sections/f04de5e/'}, {'name': '(기초편) 장고 차근차근 시작하기 2/E', 'url': 'https://www.askcompany.kr/r/sections/dfc55e7/'}, {'name': '(중급편) 장고 기본인증 뽀개기', 'url': 'https://www.askcompany.kr/r/sections/5bb1344/'}, {'name': '(중급편) 장고 Form/ModelForm 제대로 알고 쓰기', 'url': 'https://www.askcompany.kr/r/sections/72d2474/'}, {'name': '(중급편) 클래스 기반 뷰 잘 알고 쓰기', 'url': 'https://www.askcompany.kr/r/sections/387169d/'}, {'name': '(배포) 빠르게 살펴보는 Azure PaaS를 활용한 인프라 스트레스없는 웹서비스 배포', 'url': 'https://www.askcompany.kr/r/sections/7d64b4a/'}, {'name': '(초급) Pandas 워밍업', 'url': 'https://www.askcompany.kr/r/sections/f5bf323/'}, {'name': '(초급) 10 Minutes to Pandas 따라하기', 'url': 'https://www.askcompany.kr/r/sections/d8ccb08/'}, {'name': 'Google Dialogflow와 파이썬/장고를 활용하여, 카카오톡 챗봇 만들기 (초급편)', 'url': 'https://www.askcompany.kr/r/sections/d47e585/'}], 's1': [{'name': '개 
발환경 구축하기', 'url': 'https://www.askcompany.kr/vod/setup/'}, {'name': '파이썬 차근차근 시작하기', 'url': 'https://www.askcompany.kr/vod/python/'}, {'name': '크롤링 차근차근 시작하기', 'url': 'https://www.askcompany.kr/vod/crawling/'}, {'name': '파이썬으로 업무 자동화', 'url': 'https://www.askcompany.kr/vod/automation/'}, {'name': '장고 - 기본편', 'url': 'https://www.askcompany.kr/vod/django/'}, {'name': '장 
고걸스 튜토리얼', 'url': 'https://www.askcompany.kr/vod/djangogirls/'}, {'name': '장고 - Form/ModelForm 잘 알고 쓰기', 'url': 'https://www.askcompany.kr/vod/form/'}, {'name': '장고 - 클래스 기반 뷰. 잘 알고  
쓰기', 'url': 'https://www.askcompany.kr/vod/cbv/'}, {'name': '장고 - 결제 시스템 연동', 'url': 'https://www.askcompany.kr/vod/payment/'}, {'name': '장고 - 웹 프론트엔드 시작편', 'url': 'https://www.askcompany.kr/vod/frontend/'}, {'name': '장고 - 다양한 위젯 만들기', 'url': 'https://www.askcompany.kr/vod/widgets/'}, {'name': '장고 - API 서버 만들기 및 초간단 안드로이드 앱 만들기', 'url': 'https://www.askcompany.kr/vod/apiserver/'}, {'name': '장고 - 하이브리드 앱 만들기', 'url': 'https://www.askcompany.kr/vod/hybrid/'}, {'name': '장고 - 서비스 배포하기', 'url': 'https://www.askcompany.kr/vod/deploy/'}, {'name': '장고 
- 실전편 (Feat. 배달의 민족 St. 만들기)', 'url': 'https://www.askcompany.kr/vod/django-baemin/'}, {'name': '장고 - 실전편 (Feat. 인스타그램 St. 만들기)', 'url': 'https://www.askcompany.kr/vod/django-instagram/'}]}

 

이렇게 json형태로 받게 되면, 다시한번 데이터 정제를 통해서 우리가 원하는 형태로 가공해야 한다. 

이 데이터 더미를 보면 name과 url로 분리되어 있다. 

import requests 
import json
from bs4 import BeautifulSoup
from requests.api import request

url = 'https://askdjango.github.io/lv2/data.json'



response = requests.get(url).text

data_list = json.loads(response)

data_s1 = data_list["s1"]
data_s2 = data_list["s2"]

for i in data_s1:
    print(i['name'],i['url'])

for i in data_s2:
    print(i['name'],i['url'])

하면서 시행착오가 있었는데. s1과 s2로 이중배열상태여서 내가 원하는대로 json 파싱이 안됐다.

for문을 2개나 돌려서 비효율적이지만 현재로는 이 상태가 가장 내가 원하는 형태와 가까웠다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함