最近开了个炒股账户,所以用Python写了个脚本筛选出2015年1季度(开盘价与收盘价平均值)到现在有盈利但盈利少于20%的低价股(价格可定制)。详见代码。Python为3.4版本。
<span style="font-size:14px;">import http.cookiejar
import urllib.request
import json
import re
from bs4 import BeautifulSoup
def getOpener(head):
# deal with the cookies
cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
header = []
for key, value in head.items():
elem = (key, value)
header.append(elem)
opener.addheaders=header
return opener
head = {
'Host':'vip.stock.finance.sina.com.cn',
'Connection': 'Keep-Alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0'
}
opener = getOpener(head)
baseurl='http://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?num=80&sort=trade&asc=1&node=hs_a&symbol=&_s_r_a=page&page='
stop=False
stopNum=15.01
num=0
for i in range(4,20):
print("=================page:"+str(i)+"====================")
url=baseurl+str(i)
op=opener.open(url)
data=op.read().decode('GBK')
data=re.sub('ticktime:"(.*?)",','',data)
data=data.replace('{','{"').replace(':','":').replace(',',',"').replace(',"{"',',{"')
#print(data)
data=json.loads(data)
for j in range(len(data)):
trade=float(data[j]['trade'])
if trade>0:
if trade<float(stopNum):
symbol=data[j]['symbol']
name=data[j]['name']
code=data[j]['code']
trade2=data[j]['trade']
pricechange=data[j]['pricechange']
changepercent=data[j]['changepercent']
volume=data[j]['volume']
amount=data[j]['amount']
c_url='http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/'+str(code)+'.phtml?year=2015&jidu=1'
c_op=opener.open(c_url)
c_data=c_op.read().decode("GBK")
soup=BeautifulSoup(c_data)
tabData=soup.find('table',id='FundHoldSharesTable')
tabData=str(tabData)
pattern=re.compile('<td><div align="center">(.*?)</div></td>', re.S)
items=re.findall(pattern, tabData)
sum=0
total=0
sum_num=0
for item in items:
try:
value=float(item)
total=total+1
if total%2!=0:
sum=sum+value
sum_num=sum_num+1
except:
continue
if sum_num==0:
continue
avg=sum/sum_num
price=float(trade2)
print(name+" lastPrice:"+str(avg)+" currentPrice:"+str(price)+" changePrecent:"+str((price-avg)/avg))
if (price-avg>0.0)&((price-avg)/avg<0.2):
#print('*******************************')
print(' 股票名称:', name)
print(' 股票代码:', code)
print(' 当前价格:', trade2)
print(' 涨 跌:', pricechange)
print(' 涨 跌%:', changepercent)
print('成交量(手):', volume)
print('成交额(万):', amount)
num=num+1
print('*************'+str(num)+'******************')
else:
continue
else:
stop=True
break
else:
continue
if stop==True:
break
print("共为您找到"+str(num)+"只符合您要求的股票")</span>