python으로 일본 주가 데이터 다운로드

7087 단어 Python3Python

Summary


나는 묘사하지 않고 주식 가격 정보를 다운로드하는 스크립트를 썼다.

사용 방법

python ./stockDownload.py -c 7203
7203 도요타자동차(주)의 2019년 일족 데이터는 csv에서 다운로드할 수 있다.
다운로드에 성공하면 Code: 7203 download finished., 실패하면 Code: not valid. 돌아갑니다.

동기


주식 투자 기록 묘사 금지.Yahoo! finance에서 주가 정보를 새기는 방법주식 투자 기록이 공개됐지만 포맷이 변경돼 퍼스는 순조롭게 진행되지 못할 것으로 보인다.한편, 사이트 내에 다운로드 버튼이 있기 때문에 그곳을 잘 이용할 수 있는지 조사했다.

다운로드 방법


다운로드 단추를 누르면 구글 개발자 도구의 네트워크 옵션 카드에서 해석합니다.https://kabuoji3.com/stock/file.php 전원을 켜서 데이터를 자체 검사하는 것 같습니다.

조정이 필요한 부분

  • 스크립트의 fullName 은 저장 목적지가 되기 때문에 적절하게 변경됩니다.
  • header가 없으면 403 오류가 발생하기 때문에 Google 개발자 도구로user-agent를 미리 확인합니다.
  • sleep(3) 과도한 서버 부하를 피하기 위한 것입니다.
  • 스크립트


    stockDownload.py
    #!/usr/bin/env python
    
    import requests
    import re
    import click
    from time import sleep
    
    @click.command()
    @click.option("--code", "-c", "code", required=True,
            help="Stock code to download.")
    def main(code):
        year = "2019"
        session = requests.Session()
        headers = {
                    "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
                    }
        data = {
                "code":code,
                "year":year,
                "csv":""
                }
        url = "https://kabuoji3.com/stock/file.php"
        res = session.post(url, data=data, headers=headers)
        try:
            contentDisposition = res.headers['Content-Disposition']
            fileName = re.findall(r'\"(.+?)\"', contentDisposition)[0]
            fullName = ~/Documents/projects/ipo/data/stock/{}".format(fileName)
            with open(fullName, "wb") as saveFile:
                    saveFile.write(res.content)
            print("Code: {} download finished.".format(code))
        except KeyError:
            print("Code: {} not valid.".format(code))
        sleep(3)
    
    if __name__ == '__main__':
        main()
    

    제감


    나는 처음으로 클릭으로 cli를 만들었다.sys.argv보다 더 쉽게 읽을 수 있을 것 같아요.
    그리고 셸cat code | while read line: do python ./stockDownload.py -c $line; done로만 회전하세요.
    cp932 인코딩이기 때문에nkf 형식으로 변환해야 합니다.

    참고 자료



    [Python] requests에서 아날로그 클릭 버튼
    How to Write Python Command-Line Interfaces like a Pro   Python은 선을 그어 주가 데이터를 가져옵니다.
      [Python] 403 Forbidden: You don't have permission to access on this server 출현 시 대처법

    좋은 웹페이지 즐겨찾기