def getCurDataBatch(self, sidList, curPriList): sinaUrl = self.initSinaUrl for sid in sidList: sinaUrl += common.stockIDforSina(sid) sinaUrl += "," #print "request:",sinaUrl req = urllib2.Request(sinaUrl) try: response = urllib2.urlopen(req) strResult = str(response.read()) except: #print "http connection error." return None #print strResult allDatas = strResult.split(";\n") i = 0 for oneData in allDatas: i+=1 if i > len(sidList): print "Waring:",i,len(sidList) break check = re.findall(r'var hq_str_([^=]*)=\"(.*)\"', oneData) if len(check) == 0: curPriList.append(None) continue temp = check[0] if len(temp) == 2: pass #print temp[0], temp[1] else: print temp,"!=",id curPriList.append(None) continue stockResultArray = oneData.split("\"") if len(stockResultArray) <= 2: print "error" curPriList.append(None) continue stockValues = stockResultArray[1].split(",") meaning = {} j = 0 for key in sinaStockCol: meaning[key.decode('gbk')]=stockValues[j].decode('gbk') j+=1 curPriList.append(meaning) print stockValues[0] #curPriList.append(stockValues[1:6]) if len(curPriList) != len(sidList): print "getCurPriFromSina error:",sinaUrl,strResult #print "curPriList",curPriList pass return curPriList
def getData(self, idList, resultTable): sinaUrl = self.initSinaUrl for id in idList: #print id sinaUrl += common.stockIDforSina(id) sinaUrl += "," #print "sinaUrl",sinaUrl req = urllib2.Request(sinaUrl) try: response = urllib2.urlopen(req) except: print "http connection error." return False strResult = str(response.read()) print "idCount=%d,response=%d,request=%d"%(len(idList),len(strResult),len(sinaUrl)) allDatas = strResult.split("\n") n = 0 failCount = 0 if len(idList) > len(allDatas): print allDatas print "idCount:%d, valueCount:%d"%(len(idList), len(allDatas)) return False for oneData in allDatas: if oneData == "": break elif n >= len(idList): break #print n, len(allDatas),oneData realtimeData = [] totalData = [] if True == self.parse(idList[n],oneData, realtimeData): resultTable.append(realtimeData) else: resultTable.append(None) failCount+=1 n+=1 #if failCount > 0: #print "getData fail stock count:",failCount return True