본문 바로가기
Python

Python&티스토리 api로 kbo 경기 기록 자동 포스팅하기(7)

by _sweep 2021. 6. 22.

 

경기 결과에 따른 tag 삽입

오늘 날짜 2021년 6월 22일. 한화가 또 졌다.

1회부터 피홈런, 그것도 만루홈런을 맞은 것을 보고 오늘은 됐고 제발 내일은 이겨라 생각했다.

 

따라서 이 기분을 담아 오늘 이겼으면 블로그 하단 tag에 '오늘한화이김'을, 졌으면 '내일한화이김'을 추가하는 것을 구현하였다.

 

1. enterPage() 수정

enterPage 함수는 하단 포스팅에서 확인할 수 있다.

 

2021.06.17 - [Python] - Python&티스토리 api로 kbo 경기 기록 자동 포스팅하기(3)

 

Python&티스토리 api로 kbo 경기 기록 자동 포스팅하기(3)

지난 포스팅에서 오늘 치뤄진 한화 경기 기록 페이지의 url 주소를 link라는 변수에 저장했으니 이제 이 페이지에 들어가 원하는 부분을 캡쳐 후 저장하면 된다. 경기 기록 페이지에서 원하는 부

cansweep.tistory.com

 

다시 한 번 간단히 설명하자면 enterPage함수는 경기 기록 페이지에 들어가 원하는 data를 scraping하는 작업을 한다.

 

def enterPage(link, num):
    browser.get(link)

    try:
        time.sleep(1)

        global isWin
        
        # 홈 / 원정 확인 & 승 / 패 여부 확인 -> ex. 한화승김민우
        team = browser.find_elements_by_class_name('MatchBox_text__22e-R')[1].text

        # 경기 결과 캡쳐 후 이미지 저장
        result = browser.find_element_by_class_name('Home_game_head__3EEZZ').screenshot_as_png
        recordGraph = browser.find_element_by_class_name('TeamVS_comp_team_vs__fpu3N').screenshot_as_png

        # team에 한화가 없으면 한화 원정 경기, 있으면 한화 홈 경기
        if(team.find('한화') == -1):
            playerRecord = browser.find_elements_by_class_name('PlayerRecord_record_table_group__2bRI3')[0].screenshot_as_png

            # 한화의 승 / 패 여부 확인 -> 한화가 아닌 상대팀이 졌으면 한화 승
            if(team.find("승") == -1):
                isWin = True
            else:
                isWin = False
        else:
            playerRecord = browser.find_elements_by_class_name('PlayerRecord_record_table_group__2bRI3')[1].screenshot_as_png

            # 한화의 승 / 패 여부 확인 -> 한화가 졌으면 패
            if(team.find("승") == -1):
                isWin = False
            else:
                isWin = True
        
        print(isWin)

        createImage('result', result, num)
        createImage('recordGraph', recordGraph, num)
        createImage('playerRecord', playerRecord, num)
    except:
        print("Enter page Error")

 

기존의 enterPage 함수에서는 home이라는 변수에 홈팀의 이름을 저장하고 이 text가 한화인지 아닌지에 따라 다른 처리를 했었다.

 

하지만 승/패 여부, 홈팀의 이름을 모두 이곳에서 처리하도록 수정해야 해서 home 대신 team이라는 변수에 홈팀에 대한 정보를 저장하였다.

예시로, 아래의 사진처럼 한화가 그날 경기를 이기고 승리투수가 김민우라면 team에는 '한화승김민우'가 저장된다.

 

 

team에 '한화승김민우'가 저장되어 있다고 가정했을 때를 다시 해석해보자면 한화가 홈팀인 경기에서 승리하였고 승리투수가 김민우이다.

즉, team에 한화라는 문자열의 존재 여부로 한화가 홈인지 원정인지 구분할 수 있고 team에 승이라는 문자열의 존재 여부로 경기의 승패 여부를 확인할 수 있다.

 

따라서 경우의 수를 나눠보자면 다음과 같다.

  • team에 '한화' 문자열 존재(한화 홈 경기) & team에 '승' 문자열 존재 -> 한화가 이긴 경기
  • team에 '한화' 문자열 존재(한화 홈 경기) & team에 '승' 문자열 없음 -> 한화가 진 경기
  • team에 '한화' 문자열 없음(한화 원정 경기) & team에 '승' 문자열 존재 -> 한화가 진 경기
  • team에 '한화' 문자열 없음(한화 원정 경기) & team에 '승' 문자열 없음 -> 한화가 이긴 경기

위의 경우의 수에 따라 한화가 이겼다면 isWin에 True를, 졌다면 False를 저장하였다.

 

 

2. makeTag() 만들기

def makeTag():
    if isWin:
        tag = '오늘한화이김'
    else:
        tag = '내일한화이김'

    return tag

 

앞서 enterPage함수에서 isWin이라는 글로벌 변수에 한화의 승패 여부를 저장하였으므로 isWin이 True라면 '오늘한화이김'이라는 tag를, False라면 '내일한화이김'이라는 tag를 저장한다.

 

 

3. autoPosting() 수정

def autoPosting():
	...
    
    tag = makeTag()
    
    ...
    
    parameters = {
        'access_token': access_token,
        'output': 'json',
        'blogName': blogName,
        'title': title,
        'content': content,
        'visibility': '3',
        'category': categoryId,
        'tag': '{}, 한화이글스'.format(tag)
    }
    
    ...
   

 

저장한 tag를 parameters에 넣어 글 작성시 tag를 추가한다.

 

 

4. 결과 확인

코드 수정을 마친 후 오늘 경기를 바로 포스팅 해보았다.

오늘 경기는 졌기에 '내일한화이김' 이라는 tag가 삽입된 것을 확인할 수 있다.

 

위 포스팅이 궁금하다면 하단 페이지에서 확인 가능하다.

2021.06.22 - [야구 기록] - 6월22일의 야구 기록

 

6월22일의 야구 기록

이 글은 python 프로그램에 의해 자동으로 업로드된 글입니다. 경기 결과 기록 그래프 한화 선수단 기록

cansweep.tistory.com

 

댓글