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

socketref,再見!高德

https://github.com/adoggie

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

常用鏈接

留言簿(54)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

5173.com提出抓取同行交易系統(tǒng)的業(yè)務(wù)信息來做數(shù)據(jù)分析而提出這么個(gè)需求給我,花了1天用python完成

  1 # -*- coding:utf-8 -*-
  2 #掃描xunbao173.com web頁面記錄到數(shù)據(jù)庫
  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;//每頁顯示記錄數(shù)
 16 #    this.step = 5;//最多顯示分頁頁數(shù)
 17 #    this.total = total; //總記錄數(shù)
 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 #檢索頁數(shù)量
 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 #掃描游戲服務(wù)器 [{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     #進(jìn)入游戲區(qū)服
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內(nèi)的數(shù)據(jù)不存在當(dāng)前緩存內(nèi)則標(biāo)記為物品消失,并記錄消失時(shí)間
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 放屁阿狗 閱讀(6296) 評(píng)論(1)  編輯 收藏 引用 所屬分類: perl/python/php/lua/tcl

Feedback

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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成人在线| 99精品久久| 久久这里只有精品视频首页| 国产伦精品一区二区三区高清| 亚洲一区二区网站| 欧美一区二区三区在线| 在线观看精品视频| 亚洲精品国产拍免费91在线| 欧美刺激午夜性久久久久久久| 日韩视频―中文字幕| 日韩亚洲欧美综合| 国产亚洲精品久久久久久| 另类av一区二区| 欧美福利小视频| 欧美亚洲三区| 免费国产一区二区| 亚洲自啪免费| 久久综合中文字幕| 亚洲午夜电影| 久久久久国产免费免费| 日韩视频不卡中文| 午夜精品免费视频| 亚洲精品中文在线| 亚洲欧美日韩在线一区| 亚洲精品一区二区三区在线观看| 中国成人在线视频| 亚洲人成人一区二区在线观看| 亚洲一区二区三区在线观看视频| 亚洲第一天堂av| 亚洲一区二区免费在线| 亚洲国产综合91精品麻豆| 亚洲视频 欧洲视频| 亚洲精品久久久久久一区二区| 亚洲一区二区3| 日韩午夜电影| 久久免费国产精品| 欧美在线免费播放| 欧美日韩另类视频| 欧美国产视频日韩| 国产一区三区三区| 亚洲少妇在线| 一区二区三区欧美在线| 久久躁狠狠躁夜夜爽| 久久激五月天综合精品| 国产精品电影观看| 亚洲免费观看| 亚洲美女淫视频| 美女诱惑一区| 美女诱惑黄网站一区| 国产亚洲精品久久飘花| 亚洲天堂av图片| 亚洲小说欧美另类社区| 欧美激情精品久久久久久大尺度| 欧美激情按摩在线| 在线免费高清一区二区三区| 欧美一区2区视频在线观看| 亚洲在线一区二区三区| 欧美日韩在线看| 亚洲免费电影在线| 亚洲一级二级| 欧美午夜宅男影院在线观看| 夜夜爽av福利精品导航| 亚洲香蕉伊综合在人在线视看| 欧美女激情福利| 在线亚洲美日韩| 亚洲欧美精品在线观看| 国产精品theporn| 亚洲线精品一区二区三区八戒| 亚洲一区二区成人| 国产精品九九| 午夜免费电影一区在线观看| 久久国产免费看| 永久免费精品影视网站| 欧美成人国产一区二区| 日韩视频在线一区| 欧美一区二区三区播放老司机 | 久久精品国产亚洲一区二区| 久久久久久久97| 亚洲第一视频网站| 欧美日韩国产页| 亚洲一区二区三区久久| 久久久久久久尹人综合网亚洲| 在线成人中文字幕| 欧美日本免费一区二区三区| 亚洲视频一区在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲国产一区在线| 欧美亚韩一区| 久久久久9999亚洲精品| 最近中文字幕日韩精品| 亚洲在线观看视频| 娇妻被交换粗又大又硬视频欧美| 欧美jizz19hd性欧美| 一区二区免费看| 久久天天躁狠狠躁夜夜爽蜜月 | 国产精品v欧美精品v日韩| 午夜在线精品| 亚洲人成小说网站色在线| 午夜精品久久久久久久蜜桃app| 精品不卡一区二区三区| 欧美日韩在线视频一区二区| 欧美一区二区三区婷婷月色| 亚洲精品久久久蜜桃 | 亚洲午夜一级| 亚洲高清久久| 国产伦精品免费视频 | 香蕉成人伊视频在线观看| 欧美激情精品久久久久久免费印度| 亚洲一级免费视频| 亚洲国产第一页| 国产色综合久久| 欧美日韩中文字幕| 卡一卡二国产精品| 欧美一级大片在线观看| 亚洲美女一区| 亚洲电影免费| 欧美mv日韩mv亚洲| 欧美中文字幕第一页| 亚洲视频在线看| 亚洲精选一区| 91久久国产综合久久91精品网站| 国产免费成人在线视频| 欧美日韩综合久久| 欧美日韩国产区一| 欧美日韩不卡| 欧美高清你懂得| 美国十次成人| 久久综合色婷婷| 久久久久国产精品人| 欧美在线日韩| 性欧美大战久久久久久久免费观看| 一本大道久久a久久精品综合| 亚洲欧洲日本专区| 亚洲国产人成综合网站| 女人香蕉久久**毛片精品| 久久精品免费| 久久亚洲精品欧美| 久久亚洲一区二区| 久久综合色播五月| 久久全国免费视频| 久久综合婷婷| 欧美成人中文字幕| 欧美激情亚洲国产| 亚洲精品欧美日韩| 日韩系列在线| 亚洲午夜三级在线| 亚洲综合久久久久| 久久精品亚洲精品| 另类激情亚洲| 欧美精品一区二区三区久久久竹菊| 模特精品裸拍一区| 欧美精品在线观看一区二区| 欧美日韩在线观看视频| 国产精品视频一区二区三区 | 麻豆av一区二区三区久久| 欧美好骚综合网| 国产精品久久久久久妇女6080 | 欧美aⅴ99久久黑人专区| 欧美大片第1页| 欧美性生交xxxxx久久久| 国产精品亚洲美女av网站| 国产在线成人| 亚洲精品在线观| 久久aⅴ乱码一区二区三区| 鲁大师影院一区二区三区| 亚洲大片免费看| 中文欧美在线视频| 久久福利资源站| 欧美日本三区| 国产一区二区三区自拍| 亚洲人www| 欧美在线视频一区二区| 免费亚洲婷婷| 一区二区欧美亚洲| 久久久99精品免费观看不卡| 欧美日韩国产小视频| 激情另类综合| 亚洲一区二区3| 欧美电影免费观看高清| 亚洲一区亚洲| 欧美大片91| 韩国精品久久久999| 中日韩视频在线观看| 快she精品国产999| 亚洲视频第一页| 蜜臀av国产精品久久久久| 国产精品日韩欧美大师| 亚洲七七久久综合桃花剧情介绍| 欧美一区二区高清在线观看| 欧美成人蜜桃| 亚洲欧美中文另类| 欧美日韩另类综合| 亚洲激情电影中文字幕| 久久成人在线| 亚洲香蕉在线观看| 欧美另类综合| 91久久精品一区二区三区| 久久久久久久久伊人| 亚洲香蕉网站| 欧美视频在线一区二区三区|