如何獲得基本十大重倉股?
今天來點技術的。
不知道小夥伴們是否還記得我這篇文章:
20200924 散戶到底咋樣才能賺錢?
裡面有真乾貨:
散戶的精力和能力是幹不過機構的,散戶與之對比最明顯的弱點是 訊息不對稱。所以,散戶但凡腦子裡出現:我發現了一個絕妙的機會,別人都不知道,我要賺大錢了,基本上也就意味著要完犢子了。
真金白銀廝殺的交易市場裡,聰明、眼光銳利的人何其多,散戶想要透過這種策略去賺錢就是以卵擊石。
散戶真正應該做的是什麼?去買沒有訊息不對稱的股。
具體的說就是去買明牌的股,買大家一致看好的股,機構喜歡買買買的股,因為機構、大戶在這些股上並不比我們高明。
群裡經常有小夥伴問我對某隻股票怎麼看?
我但凡看到這隻股市值在300億以下,我基本都說就是賭,因為這個時候基本面、技術面啥的分析不重要,因為暗牌之下你不知道有什麼。可能成妖給你10倍回報,也可能暴雷讓你再也無法翻身。
作為一名小散,沒有東山再起的機會。所以,這樣的錢不要去賺,賭對一次只會讓最後的失敗來的更慘烈。
有很多小夥伴問我買什麼股,我說股票池說實話很簡單,就是基金重倉買的,我也跟著買。
可是中國有成千上萬只基金,每隻基金有幾十只股,又都不一樣,到底哪個股是基金愛買的?
我今天就教大家怎麼搞這種資料,幹這種事我是專業的。
首先大家要配置好 python環境,很簡單的,可以參考我這個教程:
第一課。
我們取 愛基金(同花順旗下的)基金資料:
1。 第一步開啟愛基金官網
import
os
import
time
import
traceback
import
pandas
as
pd
from
selenium
import
webdriver
import
utils
option
=
webdriver
。
ChromeOptions
()
option
。
add_argument
(
‘headless’
)
driver
=
webdriver
。
Chrome
(
‘C:\chromedriver_win32\chromedriver。exe’
)
driver
。
get
(
“http://fund。10jqka。com。cn/datacenter/sy/”
)
time
。
sleep
(
10
)
2。 獲取所有列名
driver
。
find_element_by_xpath
(
‘//tr[@class=“tr_hover”]’
)
。
text
。
split
()
columns
=
[
‘序號’
,
‘基金程式碼’
,
‘基金名稱’
,
‘相關連結’
,
‘更新日期’
,
‘周收益’
,
‘月收益’
,
‘季收益’
,
‘年收益’
,
‘三年收益’
,
‘今日收益’
,
‘成立以來收益率’
,
‘操作’
]
3。 獲取所有股票型基金
# 股票型
driver
。
find_element_by_xpath
(
‘//dd[@type=“gpx”]’
)
。
click
()
time
。
sleep
(
5
)
# 年收益排序
driver
。
find_element_by_xpath
(
‘//span[@sort=“F011”]’
)
。
click
()
time
。
sleep
(
5
)
for
i
in
range
(
10
):
js
=
‘window。scrollTo(0, document。body。scrollHeight);’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
else
:
js
=
‘var q=document。documentElement。scrollTop=0’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
eles
=
driver
。
find_elements_by_xpath
(
‘//tbody[@id=“containerMain”]/tr’
)
res
=
[]
for
ele
in
eles
:
res
。
append
(
ele
。
text
。
split
())
res
=
pd
。
DataFrame
(
data
=
res
,
columns
=
columns
)
res
。
drop
(
columns
=
[
‘相關連結’
,
‘今日收益’
,
‘操作’
],
inplace
=
True
)
res
。
to_excel
(
‘raw_data/股票型基金。xlsx’
,
header
=
True
,
index
=
False
)
4。 獲取所有混合型基金
# 混合型
driver
。
find_element_by_xpath
(
‘//dd[@type=“hhx”]’
)
。
click
()
time
。
sleep
(
5
)
# 年收益排序
driver
。
find_element_by_xpath
(
‘//span[@sort=“F011”]’
)
。
click
()
time
。
sleep
(
5
)
for
i
in
range
(
10
):
js
=
‘window。scrollTo(0, document。body。scrollHeight);’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
else
:
js
=
‘var q=document。documentElement。scrollTop=0’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
eles
=
driver
。
find_elements_by_xpath
(
‘//tbody[@id=“containerMain”]/tr’
)
res
=
[]
for
ele
in
eles
:
res
。
append
(
ele
。
text
。
split
())
res
=
pd
。
DataFrame
(
data
=
res
,
columns
=
columns
)
res
。
drop
(
columns
=
[
‘相關連結’
,
‘今日收益’
,
‘操作’
],
inplace
=
True
)
res
。
to_excel
(
‘raw_data/混合型基金。xlsx’
,
header
=
True
,
index
=
False
)
5。 獲取每個股票型基金的十大重倉股
# 股票型
driver
。
find_element_by_xpath
(
‘//dd[@type=“gpx”]’
)
。
click
()
time
。
sleep
(
5
)
# 年收益排序
driver
。
find_element_by_xpath
(
‘//span[@sort=“F011”]’
)
。
click
()
time
。
sleep
(
5
)
for
i
in
range
(
10
):
js
=
‘window。scrollTo(0, document。body。scrollHeight);’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
else
:
js
=
‘var q=document。documentElement。scrollTop=0’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
eles
=
driver
。
find_elements_by_xpath
(
‘//td[@class=“links_td links_val”]/a’
)
for
ele
in
eles
[
1
:]:
try
:
name
=
ele
。
get_attribute
(
‘text’
)
href
=
ele
。
get_attribute
(
‘href’
)
utils
。
get_top10_list
(
name
,
href
)
except
Exception
:
traceback
。
print_exc
()
6。 獲取混合型基金的十大重倉
# 混合型
driver
。
find_element_by_xpath
(
‘//dd[@type=“hhx”]’
)
。
click
()
time
。
sleep
(
5
)
# 年收益排序
driver
。
find_element_by_xpath
(
‘//span[@sort=“F011”]’
)
。
click
()
time
。
sleep
(
5
)
for
i
in
range
(
10
):
js
=
‘window。scrollTo(0, document。body。scrollHeight);’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
else
:
js
=
‘var q=document。documentElement。scrollTop=0’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
eles
=
driver
。
find_elements_by_xpath
(
‘//td[@class=“links_td links_val”]/a’
)
for
ele
in
eles
[
1
:]:
try
:
name
=
ele
。
get_attribute
(
‘text’
)
href
=
ele
。
get_attribute
(
‘href’
)
utils
。
get_top10_list
(
name
,
href
)
except
Exception
:
traceback
。
print_exc
()
7。 utils。py檔案
#coding: utf-8
import
time
from
selenium
import
webdriver
import
pandas
as
pd
def
get_top10_list
(
name
,
href
):
(
name
,
href
)
driver
=
webdriver
。
Chrome
(
r
‘C:\chromedriver_win32\chromedriver。exe’
)
driver
。
get
(
href
)
js
=
‘var q=document。documentElement。scrollTop=200’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
driver
。
find_element_by_xpath
(
‘//a[@data-taid=“tzzh”]’
)
。
click
()
time
。
sleep
(
5
)
js
=
‘var q=document。documentElement。scrollTop=1000’
driver
。
execute_script
(
js
)
time
。
sleep
(
5
)
year
=
driver
。
find_element_by_xpath
(
‘//div[@id=“zcgDate”]/div[1]/p’
)
。
text
month
=
driver
。
find_element_by_xpath
(
‘//div[@id=“zcgDate”]/div[2]/p’
)
。
text
(
year
,
month
)
top10
=
driver
。
find_elements_by_xpath
(
‘//div[@id=“zcgList”]/div[3]/ul’
)
title
=
top10
[
0
]
。
text
。
split
(
‘
\n
’
)
buffer
=
[]
for
x
in
top10
[
1
:]:
buffer
。
append
(
x
。
text
。
split
(
‘
\n
’
))
data
=
pd
。
DataFrame
(
data
=
buffer
,
columns
=
title
)
filename
=
‘raw_data/基金/’
+
name
+
‘。xlsx’
sheet_name
=
year
+
‘年’
+
month
+
‘季度’
with
pd
。
ExcelWriter
(
filename
)
as
writer
:
data
。
to_excel
(
writer
,
sheet_name
=
sheet_name
,
header
=
True
,
index
=
False
)
driver
。
quit
()
def
read_top10
(
name
,
sheet_name
):
try
:
filename
=
‘raw_data/基金/’
+
name
+
‘。xlsx’
df
=
pd
。
read_excel
(
filename
,
sheet_name
)
except
Exception
:
(
name
,
‘does not exist’
)
df
=
None
return
df
太長不看
我知道有很多小夥伴要說,我就是要看個10大重倉股,你給我整這麼多?
小夥伴放心,懶得搞這一套的可以直接看我抓到的的資料。
資料鏈接:
當然上面是原始資料,真正要分析出百大高收益基金的十大或者二十大重倉股到底是什麼,還需要進一步加工就行,感興趣的可以關注我,給我留言。
今天先講怎麼拿資料,其實在我看來這部分最重要,畢竟可以基於這個做很多分析。改天分享下基金重倉股資料,直接抄作業真心挺香的。