青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

socketref,再見!高德

https://github.com/adoggie

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  246 Posts :: 4 Stories :: 312 Comments :: 0 Trackbacks

常用鏈接

留言簿(54)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

5173.com提出抓取同行交易系統的業務信息來做數據分析而提出這么個需求給我,花了1天用python完成

  1 # -*- coding:utf-8 -*-
  2 #掃描xunbao173.com web頁面記錄到數據庫
  3 #zhangbin 2010.5.12  5173.com
  4 import sys,os
  5 
  6 import traceback,threading,time,struct,os,os.path,zlib,struct
  7 import copy,socket,select
  8 #import psycopg2
  9 import httplib,re
 10 
 11 import log,config
 12 
 13 
 14 #function Paging(total) {
 15 #    this.pageSize = 10;//每頁顯示記錄數
 16 #    this.step = 5;//最多顯示分頁頁數
 17 #    this.total = total; //總記錄數
 18 #}
 19 
 20 '''
 21 
 22 CREATE DATABASE htmlgrep
 23   WITH OWNER = postgres
 24        ENCODING = 'UTF8';
 25              
 26              
 27 CREATE TABLE htmlGrep
 28 (
 29    id integer, 
 30    item_name character(60) NOT NULL, 
 31    price_s character(40),
 32      rank integer,
 33    appear_time integer NOT NULL, 
 34    disappear_time integer NOT NULL
 35 ) WITH (OIDS=TRUE)
 36 ;
 37 
 38 '''
 39 
 40 g_conf = config.SimpleConfig()
 41 g_conf.open('grep.conf')
 42 g_dbconn = None
 43 g_logger = log.Logger('hgrep.log')
 44 g_flog = None
 45 
 46 g_cookie = ''
 47 
 48 #def getDBConn():
 49 #    global g_dbconn
 50 #    try:
 51 #        if g_dbconn == None:
 52 #            dbhost=g_conf.getPropertyValue('dbhost','localhost')
 53 #            dbname='gamegrep'
 54 #            dbuser=g_conf.getPropertyValue('dbuser','postgres')
 55 #            dbpasswd=g_conf.getPropertyValue('dbpasswd','111111')
 56 #            g_dbconn = psycopg2.connect(host=dbhost,database=dbname,user=dbuser,password=dbpasswd)
 57 #    except:
 58 #        g_logger.error(traceback.format_exc())
 59 #    return g_dbconn
 60     
 61 #檢索頁數量
 62 
 63 '''
 64 <input type="hidden" id="currentPage" value="1"/>
 65 <input type="hidden" id="orderBy" value=""/>
 66 <input type="hidden" id="pageTotal" value="24"/>
 67 '''
 68 
 69 def getPageNum(html):
 70     ms = re.findall("id=\"pageTotal\" value=\"(.*?)\"",html,re.S)
 71     if len(ms)==0:
 72         pass
 73         #return 0
 74     return ms[0]
 75 
 76 def getPageHtml(game,idx):
 77     html =''
 78     url = "/%s/getServerList"%(game)
 79     gamesite=g_conf.getPropertyValue('root.site')
 80     conn = httplib.HTTPConnection(gamesite)
 81     
 82     hdr={'Cookie':g_cookie,
 83                      'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 84                      'Accept-Charset':'GB2312,utf-8;q=0.7,*;q=0.7',
 85                      'Accept-Language':'zh-cn,zh;q=0.5',
 86                      'Keep-Alive':'300',
 87                      'Connection':'keep-alive',
 88                      'Accept-Encoding':'gzip,deflate'
 89                      }
 90             
 91     conn.request("GET""/%s/buy.gsp?keyWord=&groupName=&orderBy=&page=%s"%(game,idx),'',hdr)
 92     r1 = conn.getresponse()
 93     html = r1.read()
 94     return html
 95 
 96 
 97 def scanRecordsOfHtml(f,html,serverid,serverName):
 98     
 99     regex = '''<span class="realName">(.*?)</span>.*?rank.*?>(.*?)</dd>.*?price.*?>(.*?)</dd>.*?linkTo\('(.*?)','''
100     ms = re.findall(regex,html,re.S)
101     #f = open('hgrep.rec.txt','w')
102     #conn = getDBConn()
103     for n in ms:
104         f.write("%s,%s,%s,%s,%s,%s\n"%(n[0],n[1],n[2],n[3],serverid,serverName))
105 
106 
107 #掃描游戲服務器 [{name,url}]
108 def scanGameServers(game):
109     global g_cookie
110     url = "/%s/getServerList"%(game)
111     gamesite=g_conf.getPropertyValue('root.site')
112     conn = httplib.HTTPConnection(gamesite)
113     conn.request("GET", url)
114     r1 = conn.getresponse()
115     html = r1.read()
116     #print html
117     ms = re.findall("<div class=\"ser_area_list\">(.*?)</div>",html,re.S)
118     if len(ms)!=2:
119         print 'Html content invalid!'
120         return
121     html = ms[1]
122     #ms = re.findall("<a href=\"(.*?)\">.*?title=\"(.*?)\".*?</a>",html,re.S)
123     #"getServerList?aid=15&id=1136"
124     ms = re.findall("<a href=\".*?aid=(.*?)&id=(.*?)\">.*?title=\"(.*?)\".*?</a>",html,re.S)
125     
126     if len(ms) == 0:
127         print 'Game:%s is null!'%(game)
128         return
129     print '%s servers Found'%len(ms)
130     #print r1.getheader('set-cookie')
131     cookie = r1.getheader('set-cookie').split(';')[0]
132     g_cookie =  cookie
133     #進入游戲區服
134     scanedserver =[]
135     
136     for server in ms:
137         try:
138             
139             #if scanedserver.count(server[1])!=0:
140             #    continue
141             #scanedserver.append(server[1])
142             print server
143             f = open(server[2].decode('utf-8').encode('gb2312')+'.txt','w')
144             print "/%s/%s"%(game,server[0])
145             url = "getServerList?aid=%s&id=%s"%(server[:2])
146             print url
147             #return url
148             conn = httplib.HTTPConnection(gamesite)
149             
150             #conn.request("GET", "/%s/%s/"%(game,server[0]),None,{'Cookie':cookie})
151             hdr={'Cookie':cookie,
152                      'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
153                      'Accept-Charset':'GB2312,utf-8;q=0.7,*;q=0.7',
154                      'Accept-Language':'zh-cn,zh;q=0.5',
155                      'Keep-Alive':'300',
156                      'Connection':'keep-alive',
157                      'Accept-Encoding':'gzip,deflate'
158                      }
159             
160             #conn.request("GET", "/%s/%s"%(game,server[0]),'',hdr)
161             conn.request("GET""/%s/%s"%(game,url),'',hdr)
162             r1 = conn.getresponse()
163             html = r1.read()
164             print 'have a sleep'
165             time.sleep(.2)
166             
167             conn = httplib.HTTPConnection(gamesite)
168             conn.request("GET""/%s/%s"%(game,'buy.gsp'),'',hdr)
169             r1 = conn.getresponse()
170             html = r1.read()
171             
172             PAGE_SIZE =10
173             PAGE_COUNT =  int(getPageNum(html))/PAGE_SIZE + 1
174             
175             for page in range(1,PAGE_COUNT+1):
176                 print 'attempt to grep Game=%s Page=%s'%(game,page)
177                 html = getPageHtml(game,page)
178                 g_flog.write( html)
179                 
180                 scanRecordsOfHtml(f,html,server[1],server[2])
181             f.close()    
182             
183         except:
184             g_logger.error(traceback.format_exc())
185     
186         
187     
188 #def scanGameServers2(game):
189 #    url = "/%s/buy.gsp"%(game)
190 #    gamesite=g_conf.getPropertyValue('root.site')
191 #    conn = httplib.HTTPConnection(gamesite)
192 #    conn.request("GET", url)
193 #    print url
194 #    r1 = conn.getresponse()
195 #    html = r1.read()
196 #    #print html
197 #    print html
198 #    g_flog.write( html)
199 #    
200 #def scanRecords(file):
201 #    f = open(file,'r')
202 #    html = f.read()
203 #    f.close()
204 #    regex = '''<span class="realName">(.*?)</span>.*?rank.*?>(.*?)</dd>.*?price.*?>(.*?)</dd>.*?linkTo\('(.*?)','''
205 #    ms = re.findall(regex,html,re.S)
206 #    f = open('hgrep.rec.txt','w')
207 #    conn = getDBConn()
208 #    
209 #    for n in ms:
210 #        f.write("%s,%s,%s,%s\n"%n)
211 #        try:
212 #            cr = conn.cursor()
213 #            sql = "select count(*) from htmlgrep where id=%s"%(n[3])
214 #            cr.execute(sql)
215 #            
216 #            rs = cr.fetchone()
217 #            if rs[0] == 0 :
218 #            #if 1:
219 #                #cr = conn.cursor()
220 #                sql="insert into htmlgrep values(%s,%s,%s,%s,%s,%s);"                
221 #                cr.execute(sql,( int(n[3]),n[0],n[2],n[1],int(time.time()),0,))
222 #                conn.commit()
223 #            else:
224 #                sql = "update htmlgrep set disappear_time=0 where id=%s"%(int(n[3]))
225 #                cr.execute(sql)
226 #                conn.commit()
227 #            
228 #        except:
229 #            g_logger.error(traceback.format_exc())
230 #    #如果db內的數據不存在當前緩存內則標記為物品消失,并記錄消失時間
231 #    cr = conn.cursor()
232 #    cr.execute('select id from htmlgrep order by id')
233 #    rs = cr.fetchone()
234 #    while rs:
235 #        found = False
236 #        for n in ms:
237 #            if int(n[3]) == rs[0]:
238 #                found = True
239 #                break
240 #        if not found:
241 #            cr2 = conn.cursor()
242 #            sql = "update htmlgrep set disappear_time=%s where id=%s"%(int(time.time()),rs[0])
243 #            cr2.execute(sql)
244 #        rs = cr.fetchone()
245 #        conn.commit()
246 #    f.close()
247 #    #print str(ms)
248 ##############################################################
249     
250 
251 class sepApp:
252     def    __init__(self):
253         self._conf = config.SimpleConfig()        
254          
255     
256     def getConfig(self):
257         return self._conf
258     
259     #def getDBConn(self):
260     #    try:
261     #        if self.dbconn == None:
262     #            dbhost=self.getPropertyValue('dbhost','localhost')
263     #            dbname=self.getPropertyValue('dbname','IpRedirect')
264     #            dbuser=self.getPropertyValue('dbuser','postgres')
265     #            dbpasswd=self.getPropertyValue('dbpasswd','111111')
266     #            self.dbconn = psycopg2.connect(host=dbhost,database=dbname,user=dbuser,password=dbpasswd)
267     #    except:
268     #        self._log.error(traceback.format_exc())
269     #    return self.dbconn
270             
271     #def resetDBConn(self):
272     #    self.dbconn = None
273     
274     def run(self):
275         pass
276 
277     def getLogger(self):
278         return self._log
279     
280     def run(self, args):
281          
282         return 0
283 
284      
285 
286 ##############################################################
287 ##############################################################
288 
289 #scanRecords('c:/test - Copy.html')
290 
291 
292 '''
293 sql test:
294 ---------------------
295 --select count(*) from htmlgrep
296 --select id,count(id) from htmlgrep group by id limit 100
297 --select * from htmlgrep where id = 2310
298 --delete from htmlgrep
299 
300 '''
301 g_flog = open('c:/test.txt','w')
302 scanGameServers('mhzx')
303 sys.exit(0)
304 if __name__=='__main__':
305     if len(sys.argv)<2:
306         print 'usage: grep.py scan | build'
307         sys.exit()
308     if sys.argv[1]=='scan':
309         g_flog = open('c:/test.txt','w')
310         scanGameServers('mhzx')
311     #if sys.argv[1]=='build':
312     #    scanRecords('c:/test.txt')
313     #server = sepApp()
314 
315     
316     
317         
318     

posted on 2010-06-10 23:23 放屁阿狗 閱讀(6299) 評論(1)  編輯 收藏 引用 所屬分類: perl/python/php/lua/tcl

Feedback

# re: 抓www.xunbao173.com的交易記錄 2016-02-27 14:26 王正順
1  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区三区国产| 免费观看在线综合| 久久婷婷久久| 久久久av网站| 麻豆av一区二区三区久久| 久久综合狠狠综合久久激情| 久久精品免视看| 蜜桃av综合| 亚洲福利国产精品| 亚洲精品久久视频| 亚洲一区二区免费视频| 欧美一区免费视频| 欧美激情四色 | 日韩亚洲欧美一区| 亚洲午夜精品久久| 久久久免费精品| 亚洲国产三级在线| 亚洲欧美日韩国产成人精品影院| 久久久久.com| 国产精品国产三级国产专播品爱网| 国产精品自拍小视频| 亚洲福利视频在线| 欧美亚洲一区在线| 亚洲日韩欧美视频| 久久久久久综合网天天| 国产精品久久久久91| 永久免费精品影视网站| 亚洲一级特黄| 亚洲国产精品va在线看黑人| 香蕉久久精品日日躁夜夜躁| 久久一综合视频| 亚洲理论电影网| 久久免费黄色| 国产精品家庭影院| 亚洲国产裸拍裸体视频在线观看乱了中文| 亚洲一级在线| 亚洲国产精品成人va在线观看| 亚洲宅男天堂在线观看无病毒| 欧美精品www| 亚洲高清二区| 久久精品国产亚洲一区二区三区| 亚洲毛片在线看| 女生裸体视频一区二区三区| 国产精品亚洲视频| 亚洲免费一在线| 亚洲国产欧美久久| 久久永久免费| 亚洲成在人线av| 美国成人直播| 久久精品一区二区三区四区| 国产亚洲欧洲997久久综合| 亚洲特黄一级片| 99亚洲视频| 国产精品porn| 亚洲制服欧美中文字幕中文字幕| 亚洲第一区在线| 老司机成人网| 最新国产乱人伦偷精品免费网站 | 亚洲精品美女久久7777777| 久久久久久综合网天天| 国产午夜精品福利| 久久婷婷综合激情| 久久精品色图| 亚洲成人资源网| 欧美激情视频一区二区三区在线播放| 久久一区二区三区超碰国产精品| 黄色一区二区三区| 亚洲国产电影| 欧美亚州韩日在线看免费版国语版| 一本色道久久综合亚洲精品按摩| 亚洲精品一区二区三区av| 欧美日韩免费在线观看| 亚洲欧洲av一区二区三区久久| 亚洲一区二区三区精品在线| 国产午夜精品在线观看| 麻豆精品视频在线观看| 欧美成人午夜激情在线| 一二三区精品| 亚欧成人精品| 亚洲乱码国产乱码精品精天堂| 欧美激情精品久久久久| 欧美精品尤物在线| 亚洲一区二区免费在线| 欧美一区成人| 尤物精品国产第一福利三区| 亚洲黄色av一区| 国产精品一二| 欧美国产视频在线观看| 欧美视频在线视频| 麻豆91精品| 亚洲免费影视| 黄色亚洲精品| 夜色激情一区二区| 狠狠久久亚洲欧美| 亚洲伦理久久| 一区二区视频在线观看| 亚洲看片网站| 在线观看欧美日本| 亚洲一区二区三区激情| 亚洲日本电影| 欧美在线中文字幕| 亚洲一级片在线观看| 久久天堂国产精品| 亚洲女人天堂av| 久久人人九九| 欧美一区二区三区成人| 免费成人激情视频| 久久精品一二三| 国产精品成人免费| 亚洲国产va精品久久久不卡综合| 国产色爱av资源综合区| 99re66热这里只有精品3直播| 一区在线免费观看| 欧美一区二区在线| 亚洲欧美国产高清va在线播| 免费欧美日韩| 老鸭窝91久久精品色噜噜导演| 欧美午夜免费电影| 亚洲精品一二三| 一本色道久久综合狠狠躁篇怎么玩| 久久免费精品视频| 久久国产精彩视频| 国产精品家教| 日韩午夜av电影| 亚洲国产精品va在线看黑人动漫 | 欧美一级大片在线免费观看| 欧美风情在线观看| 亚洲大胆美女视频| 激情综合中文娱乐网| 欧美亚洲免费在线| 欧美中文在线视频| 国产精品视频xxx| 亚洲一区二区免费| 亚洲午夜视频| 欧美视频在线观看视频极品| 日韩视频在线永久播放| 亚洲国产精品99久久久久久久久| 久久久xxx| 欧美激情精品久久久久久变态| 亚洲国产日韩欧美| 欧美成人免费播放| 最新国产成人在线观看| 99成人免费视频| 欧美日韩精品欧美日韩精品| 亚洲精品一区二区三区樱花| 一区二区三区成人| 国产精品乱码久久久久久| 亚洲最黄网站| 久久精品午夜| 黄色成人av网站| 老司机精品视频一区二区三区| 欧美高清在线一区| 日韩一区二区精品视频| 欧美另类videos死尸| 亚洲精品在线视频| 亚洲欧美日韩在线综合| 久久福利资源站| 欧美+日本+国产+在线a∨观看| 亚洲国产视频a| 欧美精品一区二区久久婷婷| 亚洲日本中文字幕| 欧美亚洲免费在线| 亚洲区国产区| 欧美久久视频| 亚洲欧美日韩一区二区在线| 久久精品亚洲精品国产欧美kt∨| 一区二区视频免费完整版观看| 欧美国产日韩一区二区在线观看| 一区二区三区 在线观看视| 久久精品免费看| 一本色道久久综合一区| 国产精品亚洲成人| 欧美激情亚洲精品| 午夜视频久久久久久| 欧美激情一区二区久久久| 亚洲永久精品大片| 91久久精品国产91性色| 国产精品剧情在线亚洲| 久久这里只有精品视频首页| 日韩视频―中文字幕| 老鸭窝91久久精品色噜噜导演| 亚洲午夜成aⅴ人片| 一区二区三区亚洲| 国产精品久久久久久久久免费樱桃| 久久www成人_看片免费不卡| 亚洲精品久久久蜜桃 | 欧美在线在线| 日韩系列在线| 精品盗摄一区二区三区| 国产精品久久久久9999吃药| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲女同同性videoxma| 亚洲精品国产日韩| 欧美激情一区二区三区高清视频| 亚洲欧美偷拍卡通变态| 99热免费精品| 亚洲精品国产精品乱码不99| 国产资源精品在线观看| 国产精品久久久久久亚洲毛片 | 欧美国内亚洲|