Python爬虫筛选股票

          最近开了个炒股账户,所以用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>

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值