python 간단 한 주식 펀드 파충류

항목 주소
https://github.com/aliyoge/fund_crawler_py
필요 한 기술
  • IP 에이전트
  • 다 중 스 레 드
  • 파충류
  • sql
  • 파충류
    1.우선,매일 펀드 망 의 일부 데 이 터 를 분석 하기 시작한다.패키지 분석 을 통 해 알 수 있 듯 이:./fundcodesearch.js 는 모든 펀드 코드 의 데 이 터 를 포함 합 니 다.
    2.펀드 코드 에 따라 방문 주소:fundgz.1234567.com.cn/js/+펀드 코드+.js 는 펀드 의 실시 간 순 가치 와 평가 정 보 를 얻 을 수 있 습 니 다.
    3.펀드 코드 에 따라 방문 주소:fundf10.eastmoney.com/FundArchives Datas.aspx?type=jjcc&code=+펀드 코드+&topline=10&year=2021&month=3 은 1 분기 에 이 펀드 가 보유 하고 있 는 주식 을 얻 을 수 있 습 니 다.
    4.이러한 주 소 는 기어 오 르 기 메커니즘 을 가지 기 때문에 여러 번 방문 하면 실패 할 경우.그래서 IP 에이전트 풀 을 만들어 서 역 기어 오 르 는 데 사용 해 야 합 니 다.구축 은 간단 합 니 다.proxy풀 이라는 종목 을 뛰 면 됩 니 다.
    
    #             
    def get_proxy():
        return requests.get("http://127.0.0.1:5010/get/").json()
    5.IP 에이전트 풀 을 구축 한 후에 우 리 는 다 중 스 레 드 에서 데 이 터 를 얻 는 작업 에 착수 했다.다 중 스 레 드 를 사용 하려 면 데이터 의 읽 기와 쓰기 순서 문 제 를 고려 해 야 합 니 다.python 의 대기 열 quue 를 사용 하여 펀드 코드 를 저장 합 니 다.서로 다른 스 레 드 는 각각 이 quue 에서 펀드 코드 를 얻 고 지정 한 펀드 의 데 이 터 를 방문 합 니 다.queue 의 읽 기와 쓰기 가 막 히 기 때문에 이 과정 에서 펀드 코드 를 중복 읽 거나 읽 는 상황 이 발생 하지 않도록 할 수 있 습 니 다.
    
    #         
    fund_code_list = get_fund_code()
    fund_len = len(fund_code_list)
    
    #       
    fund_code_queue = queue.Queue(fund_len)
    #            
    for i in range(fund_len):
        # fund_code_list[i]  list  ,   list   0         
        fund_code_queue.put(fund_code_list[i][0])
    
    6.지금부터 모든 펀드 를 가 져 오 는 코드 를 작성 합 니 다.
    
    #         
    def get_fund_code():
        ...
    
        #       
        req = requests.get("http://fund.eastmoney.com/js/fundcode_search.js",
                        timeout=5,
                        headers=header)
    
        #          list 
        ...
    
        return fund_code_list
    
    7.다음은 대열 에서 펀드 코드 를 꺼 내 고 펀드 의 상세 한 상황 과 펀드 가 보유 하고 있 는 주식 을 얻 는 것 이다.
    
    #        
    while not fund_code_queue.empty():
    
        #            
        #        
        fund_code = fund_code_queue.get()
    
        ...
    
        try:
            #                     
            ...
    
    8.펀드 상세 획득
    
    #       
    req = requests.get(
        "http://fundgz.1234567.com.cn/js/" + str(fund_code) + ".js",
        proxies={"http": "http://{}".format(proxy)},
        timeout=3,
        headers=header,
    )
    #       
    ...
    
    9.주식 보유 정보 획득
    
    #         
    req = requests.get(
        "http://fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code="
        + str(fund_code) + "&topline=10&year=2021&month=3",
        proxies={"http": "http://{}".format(proxy)},
        timeout=3,
        headers=header,
    )
    #       
    ...
    
    10.데이터 베 이 스 를 준비 하여 데 이 터 를 저장 하고 데 이 터 를 선별 분석 하 는 데 사용 합 니 다.여기 서 편리 한 클 라 우 드 데이터 베 이 스 를 추천 합 니 다.원 키 로 만 들 고 원 키 로 조회 하 는 것 이 매우 편리 하 며 무료 입 니 다.MemFireDB 로 가서 계 정 하 나 를 등록 하면 사용 할 수 있 습 니 다.등록 초대 번호:6mxJl 6,6mYjGY;

    11.데이터 베 이 스 를 만 든 후 연결 정 보 를 클릭 하여 코드 에 입력 하여 데이터 베 이 스 를 연결 합 니 다.
    
    #         :
    engine = create_engine(
    'postgresql+psycopg2://username:password@ip:5433/dbname')
    12.데이터 베 이 스 를 데이터베이스 에 기록 합 니 다.
    
    with get_session() as s:
        # create fund
        ...
    
        if (create):
            s.add(fund)
    
        s.commit()
    
    13.여기까지 대부분의 작업 이 완료 되 었 습 니 다.우 리 는 main 함수 에서 스 레 드 를 열 고 기어 오 르 기 시 작 했 습 니 다.
    
    #       ,     ,    
    for i in range(50):
        t = threading.Thread(target=get_fund_data, name="LoopThread" + str(i))
        t.start()
    
    14.파충류 가 실 행 된 후에 우 리 는 MemFireDB 를 열 고 데이터베이스 에 대응 하 는 SQL 조회 단 추 를 누 르 면 우리 가 기어 온 데 이 터 를 볼 수 있다.와!우 리 는 6432 개의 데 이 터 를 얻 었 다.

    15.다음은 이 펀드 들 이 어떤 주식 을 가장 즐겨 사 는 지 살 펴 보 자.poscode,posname,count(*)as count,cast(sum(poscost)as int)from fund group by poscode,posname order by count desc limit 10 을 입력 하 십시오.

    얘 가 마 오 타이 야!
    이상 은 python 간단 한 주식 펀드 파충류 의 상세 한 내용 입 니 다.python 주식 펀드 파충류 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!

    좋은 웹페이지 즐겨찾기