python 간단 한 주식 펀드 파충류
https://github.com/aliyoge/fund_crawler_py
필요 한 기술
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 주식 펀드 파충류 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.