파이썬 클래스 메소드 질문

조회수 282회
class JPP:
    def __init__(self):
        # headless chrome 생성 및 다운로드 폴더 지정 코드
        self.driver = webdriver.Chrome()  # options=self.options
        # 이하 현재시간 기준 -12시간 + 24시간의 클래스 변수 생성 코드(생략)

    # 사이트 로그인 관련 메소드 생략

    def set_datetime_int_search(self):
        # 웹사이트에서 날짜, 시간 등 입력하고 조회버튼을 누르는 코드

    def return_skd(self):
        html = self.driver.page_source
        df = pd.read_html(html)[0]
        logger.debug('df called')
        return df

    # 기타 클래스 메소드 생략

# 기타 코드 생략
csv_downloader = JPP()
csv_downloader.connect_to(site)
while True:
    try:
        csv_downloader.set_datetime_int_search()

        if 'df1' not in globals():
            df1 = csv_downloader.return_skd() # 문제가 되는 부분
            print(df1)
            logger.debug(f'waiting for {JPP_SKD_UPDATE_config.config.interval} sec')
            time.sleep(JPP_SKD_UPDATE_config.config.interval)
        df2 = csv_downloader.return_skd() # 정상 표출
        print(df2)

        if csv_downloader.compare_old_new(df2, df1):
            break 
            csv_downloader.skd_update()
            df1 = df2
        else:
            break
        time.sleep(JPP_SKD_UPDATE_config.config.interval)
    except Exception as e:
        print(e)

df1 = csv_downloader.return_skd() # 문제가 되는 부분

df2 = csv_downloader.return_skd() # 정상 표출

같은 메서드로 불러왔는데 결과가 다릅니다. 제 생각에는 df1은 인터넷 사이트 처음 들어갔을 때 화면을 불러온 거 같고 df2는 제가 설정한 시간을 기준하여 불러온 거 같습니다. break로 while 구문을 탈출한 뒤 재호출 해보면 정상적으로 결과(df2와 같음)가 나옵니다.

왜 df1은 같은 클래스 메소드인데 결과가 다를까요? 결과는 아래 첨부하겠습니다

그리고 처음부터 코드를 몇개씩 묶어서 실행하면 정상적으로 조회가 됩니다. 이유가 뭔지 알려주시면 감사하겠습니다.

df1
   Unnamed: 0_level_0        DATE  FLT  ...  CGO PLD      OTH FCST PLD
   Unnamed: 0_level_1        DATE  FLT  ... 단위 : LBS 단위 : LBS 단위 : LBS
0                   1  2022-11-08  271  ...      NaN      NaN    17811
1                   2  2022-11-08  222  ...      NaN      NaN    33799
2                   3  2022-11-08  643  ...      NaN      NaN    18814
3                   4  2022-11-08  202  ...      NaN      NaN    30447
4                   5  2022-11-08  272  ...      NaN      NaN    15359
# 중략
14                 15  2022-11-08  220  ...      NaN      NaN    17480
15                 16  2022-11-08    3  ...      NaN      NaN    26888
16                 17  2022-11-08  273  ...      NaN      NaN     9537
17                 18  2022-11-08  214  ...      NaN      NaN    29364
18                 19  2022-11-08   61  ...      NaN      NaN    17588
[19 rows x 15 columns]


df2
   Unnamed: 0_level_0        DATE  FLT  ...  CGO PLD      OTH FCST PLD
   Unnamed: 0_level_1        DATE  FLT  ... 단위 : LBS 단위 : LBS 단위 : LBS
0                   1  2022-11-08  271  ...      NaN      NaN    17811
1                   2  2022-11-09  271  ...      NaN      NaN    20780
2                   3  2022-11-09  222  ...      NaN      NaN    28318
3                   4  2022-11-08  222  ...      NaN      NaN    33799
4                   5  2022-11-08  643  ...      NaN      NaN    18814
# 중략
50                 51  2022-11-08  211  ...      NaN      NaN    33040
51                 52  2022-11-07  211  ...      NaN      NaN    31918
52                 53  2022-11-08  647  ...      NaN      NaN    32938
53                 54  2022-11-07  281  ...      NaN      NaN    32233
54                 55  2022-11-08  281  ...      NaN      NaN    32233
[55 rows x 15 columns]

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)