我用python炒股,代碼拿去丨【百變AI秀】

      網友投稿 828 2025-03-31

      最近在跟著朋友們學習看股票,股票確實蠻復雜的,一堆的指標,各種亂七八糟的線,玩了有兩周,買了幾個股票,基本上算是持平。雖然看了各種勸退的視頻,但是感覺還是挺有意思的,繼續學習股票的相關知識。選股很重要,雖然我不會,但是在網上看了一些視頻,看到了一些個策略,因為自己是最近在學習爬蟲,手里有個錘子看什么都是釘子,所以想著用自己學習的python爬取數據,做個簡單的篩選,好了,開始吧。


      1、需求分析

      目標網站:東方財富網

      我用python炒股,代碼拿去丨【百變AI秀】

      網址:https://www.eastmoney.com/

      看!全部都是腐臭的金錢的氣味,呵!萬惡的金錢。

      找到A股的市場行情頁面:

      http://quote.eastmoney.com/center/gridlist.html#hs_a_board

      因為剛開始學習股票,所以怎么篩選也不懂,那就跟著朋友給的簡單的幾個篩選條件。

      篩選股票的條件:

      1、篩選上漲的股票,上漲的區間在 2% - 6% 的,追漲但是不追那種漲的太多的

      2、換手率在1% -10%,剔除不活躍的股票,沒有交易的股票是沒有價值的

      3、挑選市值在50-500億之間的股票,因為太大的資金盤,主力沒辦法拉升

      4、去除創業板,因為我的是新手期賬戶,所以去除30開始的股票

      2、流程分析

      1、爬取網頁,讀取所有的股票數據

      2、分析數據,取出需要的股票代碼,股票漲跌幅,總市值,以及詳細股票信息的鏈接

      3、過濾數據,篩選出最終的股票

      4、保存所有的數據到文件中,這樣可以保留歷史數據,也可以接下來做其他的分析。

      3、數據分析

      因為股票數據是分頁的,所以在爬取的過程中需要分頁讀取

      方案就是在數據框中輸入對應的頁數,然后點go 進行爬取,右鍵selector 獲取css 選擇器

      先獲得所有的行,通過xpath 進行獲取

      //*[@id="table_wrapper-table"]/tbody/tr[1] 去除最后的下標,得到所有的行數據 //*[@id="table_wrapper-table"]/tbody/tr

      因為要讀取市值這個指標,所以需要對下拉框進行勾選

      s1 = Select(driver.find_element_by_id('custom-fields')) # 實例化Select s1.select_by_value("FlowCapitalValue")

      在開始的時候對每頁點擊完成之后就繼續讀取下一頁的數據了,沒有等待數據加載完成,造成報錯

      使用了driver.implicity_wait(10),發現沒有用,因為當前頁面已經加載完成,但是這個方式可以研究,猜想可能可以選擇對應的元素

      最后只能自己做了,因為頁面上有個當前選擇的標簽,就一直等待當前選擇的頁碼和頁面上渲染的當前頁碼相匹配就認為數據加載完成。

      csv 文件的格式可以用Excel打開,可以處理,同時也寫入簡單,所以選擇了csv ,

      csv 的文件個是 逗號 進行分開字段,換行進行換行,你可以實現在txt 文件中寫入1,2,3,4 ,保存之后,修改擴展名為a.csv

      4、show you code

      用到的環境:

      python 3,seleunim

      環境的安裝可以參考 https://mp.weixin.qq.com/s?__biz=MzA4ODczMDIzNQ==&mid=2447776747&idx=1&sn=925169d8b3a8e680413c74e848f1ec71&chksm=843704ffb3408de912394e34fb51bc831e357473c6882d90fe3df2b674c171e35c4ad0ca5b79&token=2091426734&lang=zh_CN#rd

      定義一下要保存的數據結構:

      #!/usr/bin/env python # encoding: utf-8 """ #Author: 香菜 @time: 2021/8/21 0021 下午 4:33 """ class StockData: def __init__(self,id,code,up,link,switch,markValue): self.id = id self.code = code self.up = up self.link = link self.switch = switch self.markValue = markValue

      主要的爬取代碼

      #!/usr/bin/env python # encoding: utf-8 import datetime import time import requests from selenium import webdriver from selenium.webdriver.support.select import Select from xin.stock.StockData import StockData """ #Author: 香菜 @time: 2021/8/21 0021 下午 4:03 """ BASE_URL = "http://quote.eastmoney.com/center/gridlist.html#hs_a_board" # 漲幅 UP_MIN = 2 UP_MAX = 7 # 量比 LIANG_MIN = 1 # 市值 VALUE_MIN = 50 VALUE_MAX = 200 # 換手率 SWITCH_MIN = 1 SWITCH_MAX = 10 # 市值 MARK_VALUE_MIN= 50 MARK_VALUE_MAX= 300 selectCode = [] # 將 5% 轉為 5 def percent2Float(percentStr): return float(percentStr[:len(percentStr) - 1]) def write2Csv(): dateTime_p = datetime.datetime.now() str_p = datetime.datetime.strftime(dateTime_p, '%Y_%m_%d') fileName = 'stock' + str_p + '.csv' with open(fileName, 'a+', encoding='utf-8') as f: f.write('id,code,漲幅,換手率,流通市值,詳細地址\r\n') for data in selectCode: line = data.id + ','\ + data.code + ','\ + data.up + ','\ + data.switch + ','\ + data.markValue+ ',' \ + data.link + ',' +'\r\n' f.write(line) if __name__ == '__main__': driver = webdriver.Chrome('E:\child\python\python\chromedriver.exe') driver.get(BASE_URL) s1 = Select(driver.find_element_by_id('custom-fields')) # 實例化Select s1.select_by_value("FlowCapitalValue") i = 1 pageFinish = False for i in range(1,231): onePageRowList = driver.find_elements_by_xpath('//*[@id="table_wrapper-table"]/tbody/tr') for row in onePageRowList: tdList = row.find_elements_by_tag_name('td') id = tdList[0].text # id code = tdList[1].text # 股票代碼 up = percent2Float(tdList[5].text) # 漲幅 link = tdList[1].find_element_by_tag_name('a').get_attribute('href') switchStr = tdList[14].text # 換手率 markValue = tdList[len(tdList)-2].text # 市值 if switchStr == '-': continue switch = percent2Float(tdList[14].text) if code.startswith('30'): continue if up < UP_MIN: pageFinish = True break if up > UP_MAX: continue if switch < SWITCH_MIN or switch > SWITCH_MAX: continue markV = float(markValue[:len(markValue)-1]) if markV < MARK_VALUE_MIN or markV > MARK_VALUE_MAX: continue selectCode.append(StockData(id,code,tdList[5].text,link,switchStr,markValue)) if pageFinish: break # 換下一頁 pageInput = driver.find_element_by_css_selector('#main-table_paginate > input') pageInput.clear() pageInput.send_keys(str(i)) goBtn = driver.find_element_by_css_selector('#main-table_paginate > a.paginte_go') goBtn.click() print("當前頁碼:"+ str(i)) # 等待加載完成 while True: curPageStr = driver.find_element_by_css_selector('#main-table_paginate > span.paginate_page > a.paginate_button.current').text curPage = int(curPageStr) if curPage == i: time.sleep(0.5) break else: time.sleep(0.5) # 寫入到csv write2Csv()

      代碼里有基本的注釋,我猜你應該看的懂,看不懂的話可以留言給我,或者加我微信,我們一起學習

      5、爬取結果

      可以看到結果已經實現了我第一步的需求,還不錯,至少能參考一下,總比自己一頁一頁的翻找方便了

      總結:

      這只是走出了選股的第一步,后面還有很多指標需要過濾,繼續獲取數據,并且可以使用深度學習進行優化,路還很長。

      還有炒股有風險,入市需謹慎,小賭怡情,大賭傷身。切記

      【百變AI秀】有獎征文火熱進行中:https://bbs.huaweicloud.com/blogs/296704

      AI Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel怎么橫向輸入數據?
      下一篇:定制家居數字化營銷是什么?
      相關文章
      亚洲综合激情另类专区| 亚洲国产精品久久人人爱| 亚洲国产精品一区二区三区在线观看| 亚洲av日韩综合一区在线观看| 久久久精品国产亚洲成人满18免费网站| 亚洲日本成本人观看| 亚洲国产日韩视频观看| 亚洲人配人种jizz| 色老板亚洲视频免在线观| 亚洲已满18点击进入在线观看| 久久精品国产亚洲av麻豆蜜芽 | 久久夜色精品国产噜噜亚洲a| 亚洲国产成人久久| 亚洲人成影院在线高清| 亚洲制服丝袜精品久久| 亚洲最大成人网色香蕉| 久久精品国产亚洲AV蜜臀色欲 | 亚洲色婷婷六月亚洲婷婷6月 | 亚洲欧洲自拍拍偷午夜色无码| 国产亚洲精品精品国产亚洲综合| 亚洲精品在线视频| 国产精品亚洲mnbav网站 | 亚洲欧美日韩综合久久久久| 亚洲AV无码精品国产成人| 国产成人综合亚洲一区| 亚洲av再在线观看| 国产亚洲精久久久久久无码AV| 337p日本欧洲亚洲大胆裸体艺术| 亚洲日本乱码在线观看| 久久精品国产亚洲AV麻豆王友容 | 久久久久亚洲精品无码蜜桃| 亚洲综合激情六月婷婷在线观看| 亚洲成A∨人片在线观看无码| 国产精品亚洲午夜一区二区三区| 亚洲另类无码专区丝袜| 亚洲A丁香五香天堂网| 亚洲熟妇无码AV在线播放| 亚洲一级二级三级不卡| 亚洲一级片在线播放| 亚洲av片在线观看| 亚洲无线码一区二区三区|