亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 簡單的股票基金爬蟲

 更新時(shí)間:2021年06月05日 17:21:24   作者:aliyoge  
最近基金非?;鸨芏嘣静煌顿Y、不理財(cái)人,也開始討論、參與買基金了。根據(jù)投資對(duì)象的不同,基金分為股票型基金、債券基金、混合型基金、貨幣基金。所以今天我們就來看看,這些基金公司都喜歡買那些公司的股票。

項(xiàng)目地址

https://github.com/aliyoge/fund_crawler_py

所用到的技術(shù)

  1. IP代理池
  2. 多線程
  3. 爬蟲
  4. sql

開始編寫爬蟲

1.首先,開始分析天天基金網(wǎng)的一些數(shù)據(jù)。經(jīng)過抓包分析,可知: ./fundcode_search.js包含所有基金代碼的數(shù)據(jù)。

2.根據(jù)基金代碼,訪問地址: fundgz.1234567.com.cn/js/ + 基金代碼 + .js可以獲取基金實(shí)時(shí)凈值和估值信息。

3.根據(jù)基金代碼,訪問地址: fundf10.eastmoney.com/FundArchivesDatas.aspx?type=jjcc&code= + 基金代碼 + &topline=10&year=2021&month=3可以獲取第一季度該基金所持倉的股票。

4.由于這些地址具有反爬機(jī)制,多次訪問將會(huì)失敗的情況。所以需要搭建IP代理池,用于反爬。搭建很簡單,只需要將proxy_pool這個(gè)項(xiàng)目跑起來就行了。

# 通過這個(gè)方法就能獲取代理
def get_proxy():
    return requests.get("http://127.0.0.1:5010/get/").json()

5.搭建完IP代理池后,我們開始著手多線程爬取數(shù)據(jù)的工作。使用多線程,需要考慮到數(shù)據(jù)的讀寫順序問題。這里使用python中的隊(duì)列queue存儲(chǔ)基金代碼,不同線程分別從這個(gè)queue中獲取基金代碼,并訪問指定基金的數(shù)據(jù)。因?yàn)閝ueue的讀取和寫入是阻塞的,所以可確保該過程不會(huì)出現(xiàn)讀取重復(fù)和讀取丟失基金代碼的情況。

# 獲取所有基金代碼
fund_code_list = get_fund_code()
fund_len = len(fund_code_list)

# 創(chuàng)建一個(gè)隊(duì)列
fund_code_queue = queue.Queue(fund_len)
# 寫入基金代碼數(shù)據(jù)到隊(duì)列
for i in range(fund_len):
    # fund_code_list[i]也是list類型,其中該list中的第0個(gè)元素存放基金代碼
    fund_code_queue.put(fund_code_list[i][0])

6.現(xiàn)在開始編寫獲取所有基金的代碼。

# 獲取所有基金代碼
def get_fund_code():
    ...

    # 訪問網(wǎng)頁接口
    req = requests.get("http://fund.eastmoney.com/js/fundcode_search.js",
                    timeout=5,
                    headers=header)

    # 解析出基金代碼存入list中
    ...

    return fund_code_list

7.接下來是從隊(duì)列中取出基金代碼,同時(shí)獲取基金詳情和基金持倉的股票。

# 當(dāng)隊(duì)列不為空時(shí)
while not fund_code_queue.empty():

    # 從隊(duì)列讀取一個(gè)基金代碼
    # 讀取是阻塞操作
    fund_code = fund_code_queue.get()

    ...

    try:
        # 使用該基金代碼進(jìn)行基金詳情和股票持倉請(qǐng)求
        ...

8.獲取基金詳情

# 使用代理訪問
req = requests.get(
    "http://fundgz.1234567.com.cn/js/" + str(fund_code) + ".js",
    proxies={"http": "http://{}".format(proxy)},
    timeout=3,
    headers=header,
)
# 解析返回?cái)?shù)據(jù)
...

9.獲取持倉股票信息

# 獲取股票投資明細(xì)
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,
)
# 解析返回?cái)?shù)據(jù)
...

10.準(zhǔn)備一個(gè)數(shù)據(jù)庫,用于存儲(chǔ)數(shù)據(jù)和對(duì)數(shù)據(jù)進(jìn)行篩選分析。這里推薦一個(gè)方便的云數(shù)據(jù)庫,一鍵創(chuàng)建,一鍵查詢,十分方便,而且是免費(fèi)的哦。前往MemFireDB注冊(cè)一個(gè)賬號(hào)就能使用。注冊(cè)邀請(qǐng)碼:6mxJl6、6mYjGY;

11.創(chuàng)建好數(shù)據(jù)庫后,點(diǎn)擊連接信息填入代碼中,用于連接數(shù)據(jù)庫。

# 初始化數(shù)據(jù)庫連接:
engine = create_engine(
'postgresql+psycopg2://username:password@ip:5433/dbname')

12.將數(shù)據(jù)寫入數(shù)據(jù)庫中。

with get_session() as s:
    # create fund
    ...

    if (create):
        s.add(fund)

    s.commit()

13.到這里,大部分工作已經(jīng)完成了,我們?cè)趍ain函數(shù)中開啟線程,開始爬取。

# 在一定范圍內(nèi),線程數(shù)越多,速度越快
for i in range(50):
    t = threading.Thread(target=get_fund_data, name="LoopThread" + str(i))
    t.start()

14.等到爬蟲運(yùn)行完成之后,我們打開MemFireDB,點(diǎn)擊對(duì)應(yīng)數(shù)據(jù)庫的SQL查詢按鈕,就可以查看我們爬取的數(shù)據(jù)。哇!我們獲取到了6432條數(shù)據(jù)。

15.接下來讓我們來看看這些基金最喜歡買哪些股票吧。輸入SQL語句select poscode, posname, count(*) as count, cast(sum(poscost) as int) from fund group by poscode, posname order by count desc limit 10;

它就是茅臺(tái)!

以上就是python 簡單的股票基金爬蟲的詳細(xì)內(nèi)容,更多關(guān)于python 股票基金爬蟲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pytorch中transform.Compose()用法詳解

    pytorch中transform.Compose()用法詳解

    PyTorch是一個(gè)開源的Python機(jī)器學(xué)習(xí)庫,基于Torch,用于自然語言處理等應(yīng)用程序,這篇文章主要介紹了pytorch中transform.Compose()用法,需要的朋友可以參考下
    2023-10-10
  • python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解

    python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解

    今天小編就為大家分享一篇python 線性回歸分析模型檢驗(yàn)標(biāo)準(zhǔn)--擬合優(yōu)度詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python 消除 futureWarning問題的解決

    python 消除 futureWarning問題的解決

    今天小編就為大家分享一篇python 消除 futureWarning問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python制作春聯(lián)的示例代碼

    Python制作春聯(lián)的示例代碼

    春聯(lián)是中國傳統(tǒng)文化中最具內(nèi)涵的元素之一,它以對(duì)仗工整、簡潔精巧的文字描繪美好形象,抒發(fā)美好愿望,是中國特有的文學(xué)形式,是華人們過年的重要習(xí)俗。本文將通過Python制作春聯(lián),需要的可以參考一下
    2022-01-01
  • Python面向?qū)ο蟪绦蛟O(shè)計(jì)之類和對(duì)象、實(shí)例變量、類變量用法分析

    Python面向?qū)ο蟪绦蛟O(shè)計(jì)之類和對(duì)象、實(shí)例變量、類變量用法分析

    這篇文章主要介紹了Python面向?qū)ο蟪绦蛟O(shè)計(jì)之類和對(duì)象、實(shí)例變量、類變量用法,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中類和對(duì)象、實(shí)例變量、類變量具體功能、原理、使用方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • Python csv模塊使用方法代碼實(shí)例

    Python csv模塊使用方法代碼實(shí)例

    這篇文章主要介紹了Python csv模塊使用方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 使用Python的turtle模塊繪制櫻花樹的代碼示例

    使用Python的turtle模塊繪制櫻花樹的代碼示例

    Python的turtle模塊是一個(gè)直觀的圖形化編程工具,讓用戶通過控制海龜在屏幕上的移動(dòng)來繪制各種形狀和圖案,在接下來的文章中,我將通過一個(gè)生動(dòng)的例子——繪制一幅櫻花樹圖畫——來深入探討turtle模塊的實(shí)用性,需要的朋友可以參考下
    2024-04-04
  • pyqt5 使用setStyleSheet設(shè)置單元格的邊框樣式操作

    pyqt5 使用setStyleSheet設(shè)置單元格的邊框樣式操作

    這篇文章主要介紹了pyqt5 使用setStyleSheet設(shè)置單元格的邊框樣式操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Django自定義用戶認(rèn)證示例詳解

    Django自定義用戶認(rèn)證示例詳解

    這篇文章主要給大家介紹了關(guān)于Django自定義用戶認(rèn)證的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Python中常用的高階函數(shù)實(shí)例詳解

    Python中常用的高階函數(shù)實(shí)例詳解

    高階函數(shù)指的是能接收函數(shù)作為參數(shù)的函數(shù)或類,這篇文章主要介紹了Python中常用的高階函數(shù),通過實(shí)例文字解釋相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-02-02

最新評(píng)論