INVESTAR / StockAnalysisInPython

456 stars 413 forks source link

5장 주식 시세 불러오기 오류 #123

Open gtaehun02 opened 2 years ago

gtaehun02 commented 2 years ago

안녕하세요 저자님 좋은 책 덕분에 열심히 공부하고 있습니다. 5장에서 DBUpdater.py 코드를 작성하여 실행하였는데, 시세를 100 페이지씩 불러오느라 시간이 오래 걸릴 것 같아서 읽어오는 도중 IDLE 를 닫았습니다. 이후에 실행해봤는데, 시세 데이터를 아직 가져오지 못한 상태에서 1페이지씩 업데이트하여 시세를 불러오지 못했습니다. json 파일을 이용해 pages_to_fetch 값을 100으로 바꿔도 해결이 안되어서 질문 드립니다.

INVESTAR commented 2 years ago

네이버에서 브라우저 정보가 없는 웹 스크레이핑을 차단했기 때문에 DBUpdater.py 대신 DBUpdaterEx.py 코드로 실행하셔야 합니다. https://github.com/INVESTAR/StockAnalysisInPython/blob/master/05_Stock_Price_API/Investar/DBUpdaterEx.py

DBUpdaterEx.py 코드를 실행했는데도 문제가 발생하는 경우, 출력된 화면 내용을 복사해서 붙여넣기 해주시고 상황에 대해서 조금 더 상세히 설명해 주시면 답변이 더 수월할 것 같습니다.

gtaehun02 commented 2 years ago
image

DBUpdaterEx.py 코드로 실행을 했습니다. 근데 시세를 불러오는 도중에 IDLE 창을 닫아서 캡쳐화면을 보시면 가장 먼저 시세를 불러온 DL은 데이터가 있는 반면에 삼성에스디에스 데이터는 불러오기 전에 닫아 버려서 데이터가 없습니다. 다시 데이터를 불러 오려고 코드를 다시 실행했지만 1페이지씩 가져오도록 되어 있어서 해결하지 못했습니다.

INVESTAR commented 2 years ago

1 페이지씩 업데이트 된다고 말씀하신 것으로 봐서는 아래 코드에 의해서 pages_to_fetch 값이 1로 변경된 것 같습니다.

    def execute_daily(self):
        """실행 즉시 및 매일 오후 다섯시에 daily_price 테이블 업데이트"""
        self.update_comp_info()

        try:
            with open('config.json', 'r') as in_file:
                config = json.load(in_file)
                pages_to_fetch = config['pages_to_fetch']
        except FileNotFoundError:
            with open('config.json', 'w') as out_file:
                pages_to_fetch = 100 
                config = {'pages_to_fetch': 1}
                json.dump(config, out_file)
        self.update_daily_price(pages_to_fetch)

DBUpdaterEx.py가 존재하는 디렉터리에 config.json 파일이 있을텐데 그 파일에 적혀있는 pages_to_fetch 값이 1로 되어있지 않은지 확인해 보시기 바랍니다.