最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python 簡單的股票基金爬蟲

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

項目地址

https://github.com/aliyoge/fund_crawler_py

所用到的技術

  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可以獲取基金實時凈值和估值信息。

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

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

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

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

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

# 創(chuàng)建一個隊列
fund_code_queue = queue.Queue(fund_len)
# 寫入基金代碼數(shù)據(jù)到隊列
for i in range(fund_len):
    # fund_code_list[i]也是list類型,其中該list中的第0個元素存放基金代碼
    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.接下來是從隊列中取出基金代碼,同時獲取基金詳情和基金持倉的股票。

# 當隊列不為空時
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,
)
# 解析返回數(shù)據(jù)
...

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,
)
# 解析返回數(shù)據(jù)
...

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

11.創(chuàng)建好數(shù)據(jù)庫后,點擊連接信息填入代碼中,用于連接數(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)完成了,我們在main函數(shù)中開啟線程,開始爬取。

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

14.等到爬蟲運行完成之后,我們打開MemFireDB,點擊對應數(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;

它就是茅臺!

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

相關文章

  • Python3導入CSV文件的實例(跟Python2有些許的不同)

    Python3導入CSV文件的實例(跟Python2有些許的不同)

    今天小編就為大家分享一篇Python3導入CSV文件的實例(跟Python2有些許的不同),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python?groupby函數(shù)圖文詳解

    Python?groupby函數(shù)圖文詳解

    pandas中DataFrame提供了一個靈活高效的groupby功能,它使你能以一種自然的方式對數(shù)據(jù)集進行切片、切塊、摘要等操作,下面這篇文章主要給大家介紹了關于Python?groupby函數(shù)詳解的相關資料,需要的朋友可以參考下
    2022-07-07
  • Python中如何導入類示例詳解

    Python中如何導入類示例詳解

    這篇文章主要給大家介紹了關于Python中如何導入類的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • python數(shù)據(jù)挖掘Apriori算法實現(xiàn)關聯(lián)分析

    python數(shù)據(jù)挖掘Apriori算法實現(xiàn)關聯(lián)分析

    這篇文章主要為大家介紹了python數(shù)據(jù)挖掘Apriori算法實現(xiàn)關聯(lián)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • python使用tkinter實現(xiàn)透明窗體

    python使用tkinter實現(xiàn)透明窗體

    一直在思索實現(xiàn)一個透明的窗體,然后可以基于這個窗體可以開發(fā)出各種好玩的應用(如桌面運動的小人、運動的小球、截圖、錄制GIF等等),今天無意間居然讓我把其中一個最核心的技術難關突破了,我非常高興,也借這個機會跟大家分享一下。
    2021-05-05
  • django之session與分頁(實例講解)

    django之session與分頁(實例講解)

    下面小編就為大家?guī)硪黄猟jango之session與分頁(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 詳解python如何引用包package

    詳解python如何引用包package

    在本篇文章里小編給大家整理的是關于python中引用包方法及相關實例,需要的朋友們可以學習下。
    2020-06-06
  • AI生成圖片Stable?Diffusion環(huán)境搭建與運行方法

    AI生成圖片Stable?Diffusion環(huán)境搭建與運行方法

    Stable?Diffusion是一種基于擴散過程的生成模型,由Ge?et?al.在2021年提出,該模型利用了隨機變量的穩(wěn)定分布,通過遞歸地應用擴散過程來生成高質(zhì)量的圖像,這篇文章主要介紹了AI圖片生成Stable?Diffusion環(huán)境搭建與運行,需要的朋友可以參考下
    2023-05-05
  • Python項目打包并部署到Docker詳細步驟

    Python項目打包并部署到Docker詳細步驟

    這篇文章主要介紹了如何使用Docker將Python項目打包成鏡像并部署為容器,包括準備工作、Python項目結構、編寫Dockerfile、構建Docker鏡像、運行容器、優(yōu)化鏡像大小、自動化部署以及總結,需要的朋友可以參考下
    2025-03-03
  • python解析HTML并提取span標簽中的文本

    python解析HTML并提取span標簽中的文本

    在網(wǎng)頁開發(fā)和數(shù)據(jù)抓取過程中,我們經(jīng)常需要從HTML頁面中提取信息,尤其是span元素中的文本,span標簽是一個行內(nèi)元素,通常用于包裝一小段文本或其他元素,在Python中,我們可以通過使用BeautifulSoup或lxml等庫來解析HTML并提取span標簽中的文本
    2024-12-12

最新評論

东乌珠穆沁旗| 类乌齐县| 繁昌县| 曲麻莱县| 盖州市| 平安县| 西城区| 东兴市| 静乐县| 盐边县| 闻喜县| 大悟县| 延川县| 富裕县| 惠东县| 将乐县| 怀化市| 伊宁县| 运城市| 韶关市| 雅江县| 镇远县| 刚察县| 民和| 望江县| 贵阳市| 普兰县| 塔城市| 定西市| 黄山市| 乐陵市| 习水县| 濮阳县| 海南省| 望城县| 武宁县| 开化县| 依安县| 伊宁市| 天水市| 稷山县|