본문 바로가기
시행착오/코드

코드 간결하게 만들기

by ag_zero 2021. 11. 19.
728x90

2021.11.19 - [데이터 이해하기/데이터 다루기] - [데이터 수집] 공공데이터 API - Requests, Beautiful Soup 사용하기

 

[데이터 수집] 공공데이터 API - Requests, Beautiful Soup 사용하기

오픈API 정의 오픈: Open, 개방, 공개 API: Application Programming Interface, 응용 프로그램 인터페이스 오픈 API: 일반적으로 웹 서비스(Web Services)형태로써 특정 기능 혹은 콘텐츠 서비스를 위해 외부에..

studydaily.tistory.com

 

앞에서 작성했던 API에서 필요한 데이터를 가져오기 위해 긴 for 문과 if문을 사용했다.

 

data=soup.find_all('item')
con_list=[]

for item in data:
    if item.find('title'):
        Title=item.find('title').text
    else:
        Title=None
    if item.find('eventstartdate'):
        Sdate=item.find('eventstartdate').text
    else:
        Sdate=None
    if item.find('eventenddate'):
        Edate=item.find('eventenddate').text
    else:
        Edate=None
    if item.find('addr1'):
        Addr=item.find('addr1').text
    else:
        Addr=None
    if item.find('mapy'):
        mapY=item.find('mapy').text
    if item.find('cat1'):
        cat1=item.find('cat1').text
    else:
        cat1=None    
    if item.find('cat2'):
        cat2=item.find('cat2').text
    else:
        cat2=None
    if item.find('cat3'):
        cat3=item.find('cat3').text
    else:
        cat3=None
    if item.find('mapx'):
        mapX=item.find('mapx').text
    else:
        mapX=None
        
    con_list.append({'축제명':Title,'시작일':Sdate, '종료일':Edate,
                    '주소':Addr, '위도':mapY, '경도':mapX,
                    'cat1':cat1, 'cat2':cat2, 'cat3':cat3})

 

 

하지만, 더 간결하고 쉽게 코드를 작성할 수 있지 않을까? 라는 생각이 들었다.

고민끝에 아래의 방법으로 작성해봤다.

 

 

soup을 사용해 모든 텍스트를 가져오는 부분부터 시작

data=soup.find_all('item')

 

찾고자 하는 변수를 리스트로 ls에 저장하고 for문을 사용해 해당 변수를 찾는다.

ls=['title','addr1'] # 찾고자하는 데이터

con_list=[]
list=[]

for i in ls:
  dt={} # 컬럼명과 내용을 딕셔너리 형태로 저장
     
  for c in data: 
    if c.find(i):
       dt[i] = c.find(i).text # 텍스트 데이터를 돌면서 리스트에 있는 항목을 찾는다.
    else:
      dt[i] = None
    
    list.append({i:dt[i]}) # 찾은 데이터를 list에 저장한다.

list

코드를 실행하면 위와 같이 원하던 title과 addr1 데이터를 얻을 수 있었다.

 

 

'시행착오 > 코드' 카테고리의 다른 글

Media Pipe 오류 해결  (0) 2021.11.19