コード例 #1
0
ファイル: xueqiu_spider.py プロジェクト: socialpercon/bull
    def perform(self):
        #第一次请求取得cookie
        url = self.prepare_url
        self.curl.setopt(pycurl.URL, url)
        self.curl.perform()
        self.call_back()
        args = {
            'size': '1',
            'category': 'SH',
            'orderby': 'symbol',
            'order': 'desc',
        }
        request_attrs = XueqiuStock.attr_list()
        for attr in request_attrs:
            args[attr] = 'ALL'

        #先请求二次取得总数
        url = self.base_url + '/screen.json?%s' % (urllib.urlencode(args))
        self.curl.setopt(pycurl.URL, url)
        self.curl.setopt(pycurl.WRITEFUNCTION, self.buf_1.write)  #设置回调
        self.curl.perform()
        response = self.buf_1.getvalue()
        self.all_result = json.loads(response)
        args['size'] = self.all_result['count']
        self.call_back()

        #再请求第三次取得所有数据
        url = self.base_url + '/screen.json?%s' % (urllib.urlencode(args))
        self.curl.setopt(pycurl.URL, url)
        self.curl.setopt(pycurl.WRITEFUNCTION, self.buf_2.write)  #设置回调
        self.curl.perform()
        response = self.buf_2.getvalue()
        self.all_result = json.loads(response)
        self.call_back()
コード例 #2
0
ファイル: xueqiu_spider.py プロジェクト: DengZuoheng/bull
 def perform(self):
     #第一次请求取得cookie
     url = self.prepare_url
     self.curl.setopt(pycurl.URL, url)
     self.curl.perform() 
     self.call_back()
     args = {
         'size':'1',
         'category':'SH',
         'orderby':'symbol',
         'order':'desc',
     }
     request_attrs = XueqiuStock.attr_list()
     for attr in request_attrs:
         args[attr] = 'ALL'
         
     #先请求二次取得总数
     url = self.base_url+'/screen.json?%s'%(urllib.urlencode(args))
     self.curl.setopt(pycurl.URL, url)
     self.curl.setopt(pycurl.WRITEFUNCTION, self.buf_1.write)#设置回调
     self.curl.perform()
     response = self.buf_1.getvalue()
     self.all_result = json.loads(response)
     args['size'] = self.all_result['count'] 
     self.call_back()
     
     #再请求第三次取得所有数据
     url = self.base_url+'/screen.json?%s'%(urllib.urlencode(args))
     self.curl.setopt(pycurl.URL, url)
     self.curl.setopt(pycurl.WRITEFUNCTION, self.buf_2.write)#设置回调
     self.curl.perform() 
     response = self.buf_2.getvalue()
     self.all_result = json.loads(response)
     self.call_back()   
コード例 #3
0
 def test_XueqiuDao_Filter(self):
     dao = XueqiuDao('../db.sqlite3', 'xueqiu')
     cond = [('mc', 0, 10000)]
     ret = dao.filter(cond)
     self.assertGreater(len(ret), 1)
     stock = XueqiuStock(*ret[0])
     self.assertGreater(stock.mc, 0)
     self.assertGreater(10000, stock.mc)
コード例 #4
0
 def test_XueqiuDao_Filter_Multi(self):
     dao = XueqiuDao('../db.sqlite3', 'xueqiu')
     cond = [('mc', -7000, 7000), ('fmc', -10000, 10000)]
     ret = dao.filter(cond)
     self.assertGreater(len(ret), 1)
     for item in ret:
         stock = XueqiuStock(*item)
         self.assertGreater(stock['mc'], -7000)
         self.assertGreater(7000, stock['mc'])
         self.assertGreater(stock['fmc'], -10000)
         self.assertGreater(10000, stock['fmc'])
コード例 #5
0
ファイル: test_stock.py プロジェクト: DengZuoheng/bull
 def test_XueqiuStock(self):
     test_data = {
         'ticker':'23333',
         'title':'ABCD',
         'change':0.123,
         'price':1.234,
         'pe':2.345,
         'peg':3.456,
         'pbv':4.567,
         'capital':5.678,
     } 
     st = XueqiuStock(**test_data)
     for key in test_data:
         self.assertEqual(test_data[key],st[key]) 
         self.assertEqual('double',st.get_type_by_key(key))
     ret = XueqiuStock.attr_list()
     self.assertEqual([
         "pct1m", "pelyr", "chgpct", "tr1m", "tr20", "pb" , "chgpct1m", 
         "pct20", "tr", "pct", "current", "pettm", "chgpct20", "tr5", "fmc", 
         "chgpct5", "tr10", "evps", "volavg30", "volume", "pct10", "dy", 
         "mc", "amount", "pct5", "chgpct10"], ret)
コード例 #6
0
ファイル: test_stock.py プロジェクト: socialpercon/bull
 def test_XueqiuStock(self):
     test_data = {
         'ticker': '23333',
         'title': 'ABCD',
         'change': 0.123,
         'price': 1.234,
         'pe': 2.345,
         'peg': 3.456,
         'pbv': 4.567,
         'capital': 5.678,
     }
     st = XueqiuStock(**test_data)
     for key in test_data:
         self.assertEqual(test_data[key], st[key])
         self.assertEqual('double', st.get_type_by_key(key))
     ret = XueqiuStock.attr_list()
     self.assertEqual([
         "pct1m", "pelyr", "chgpct", "tr1m", "tr20", "pb", "chgpct1m",
         "pct20", "tr", "pct", "current", "pettm", "chgpct20", "tr5", "fmc",
         "chgpct5", "tr10", "evps", "volavg30", "volume", "pct10", "dy",
         "mc", "amount", "pct5", "chgpct10"
     ], ret)
コード例 #7
0
ファイル: xueqiu_spider.py プロジェクト: socialpercon/bull
 def results(self):
     data = self.all_result['list']  #雪球的是list
     for item in data:
         stock = XueqiuStock(**item)
         self.save.append(stock)
     return self.save