Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 13734|Απάντηση: 5

Πώς να πιάσετε επιστημονικά κόκκινους φακέλους: Στο τέλος του χρόνου, μπορείτε να γίνετε πλούσιοι και να γράψετε ένα πρόγραμμα για να αρπάξετε κόκκινους φακέλους

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 13/2/2015 10:44:10 μ.μ. | | | |
0×00 Ιστορικό

Πώς είναι οι κόκκινοι φάκελοι; Ο γιος του αδελφού του, Huer, είπε: «Τα χρήματα είναι σχεδόν συγκρίσιμα. Ο αδερφός και η κόρη Ντάο Γιουν είπαν: «Δεν είναι τόσο καλό όσο η θεία μου λόγω του ανέμου». «Όλοι καταλαβαίνουν το φόντο, είναι η Πρωτοχρονιά και είναι η μέρα που κόκκινοι φάκελοι πετούν σε όλο τον ουρανό. Έτυχε να μάθω Python πριν από δύο μέρες και ήμουν πιο ενθουσιασμένος, οπότε μελέτησα και μελέτησα την ανίχνευση των κόκκινων φακέλων του Weibo, γιατί κόκκινοι φάκελοι Weibo αντί για κόκκινους φακέλους Alipay, γιατί καταλαβαίνω μόνο τον Ιστό, και αν έχω την ενέργεια, μπορεί επίσης να μελετήσω τον αλγόριθμο whack-a-mole στο μέλλον.
Επειδή είμαι αρχάριος στην Python, αυτό το πρόγραμμα είναι επίσης το τρίτο πρόγραμμα που έγραψα αφού έμαθα την Python, οπότε παρακαλώ μην τρυπάτε αυτοπροσώπως εάν υπάρχει κάποιο λάκκο στον κώδικα, η εστίαση είναι στην ιδέα, καλά, αν υπάρχει κάποιο λάκκο στην ιδέα, παρακαλώ μην το σπρώχνετε αυτοπροσώπως, βλέπετε ότι ο IE έχει το πρόσωπο να ορίσει τον εαυτό του ως το προεπιλεγμένο πρόγραμμα περιήγησης, γράφω ένα άρθρο αποβρασμάτων είναι επίσης αποδεκτό......
Χρησιμοποιώ την Python 2.7 και λέγεται ότι υπάρχει μεγάλη διαφορά μεταξύ της Python 2 και της Python 3.
0×01 Ιδέες
Ήμουν πολύ τεμπέλης για να το περιγράψω με λόγια, οπότε σχεδίασα ένα σκίτσο και όλοι θα έπρεπε να μπορούν να το καταλάβουν.
Πρώτα απ 'όλα, ο παλιός κανόνας, εισαγάγετε πρώτα μια βιβλιοθήκη για την οποία δεν γνωρίζετε ότι είναι χρήσιμη αλλά δεν μπορείτε να κάνετε χωρίς:
[mw_shl_code=java,true]import re import urllib import urllib2 import cookielib import base64 import binascii import os import json import sys import cPickle as p import rsa[/mw_shl_code] Στη συνέχεια, δηλώστε κάποιες άλλες μεταβλητές που θα χρειαστεί να χρησιμοποιήσετε αργότερα:

[mw_shl_code=java,true]reload(sys)sys.setdefaultencoding('utf-8&') #将字符编码置为utf-8luckyList=[] #红包列表lowest=10 #能忍受红包领奖记录最低为多少[/mw_shl_code]Εδώ χρησιμοποιείται μια βιβλιοθήκη rsa, η οποία δεν περιλαμβάνεται στην Python από προεπιλογή. Πρέπει να το εγκαταστήσετε :https://pypi.python.org/pypi/rsa/

Αφού το κατεβάσετε, εκτελέστε setpy.py εγκατάσταση και, στη συνέχεια, μπορούμε να ξεκινήσουμε τα βήματα ανάπτυξης.
0×02 Είσοδος στο Weibo
Η ενέργεια της αρπαγής κόκκινων φακέλων πρέπει να πραγματοποιηθεί μετά τη σύνδεση, επομένως πρέπει να υπάρχει λειτουργία σύνδεσης, η σύνδεση δεν είναι το κλειδί, το κλειδί είναι η διατήρηση των cookies, εδώ απαιτείται η συνεργασία του cookielib.
[mw_shl_code=java,true]cj = cookielib. CookieJar()opener = urllib2.build_opener(urllib2. HTTPCookieProcessor(cj))urllib2.install_opener(opener)[/mw_shl_code] Με αυτόν τον τρόπο, όλες οι λειτουργίες δικτύου που χρησιμοποιούν το opener θα χειρίζονται την κατάσταση των cookies, αν και δεν γνωρίζω πολλά για αυτό, αλλά είναι καταπληκτικό.
Στη συνέχεια, πρέπει να ενσωματώσουμε δύο ενότητες, η μία είναι η μονάδα απόκτησης δεδομένων, η οποία χρησιμοποιείται για την απλή ΛΗΨΗ δεδομένων και η άλλη χρησιμοποιείται για την ΑΝΑΡΤΗΣΗ δεδομένων.
[mw_shl_code=java,true]def getData(url) : try: req = urllib2. Request(url) result = opener.open(req) text = result.read() text=text.decode("utf-8").encode("gbk",'ignore') κείμενο επιστροφής εκτός από την Εξαίρεση, π.χ.:                print u' request exception, url: '+url print e def postData(url,data,header) : try: data = urllib.urlencode(data) req = urllib2. Request(url,data,header) result = opener.open(req) text = result.read() return text except Exception, e: print u'Request exception, url: '+url[/mw_shl_code] Με αυτές τις δύο ενότητες, μπορούμε να ΛΗΨΟΥΜΕ και να ΑΝΑΡΤΗΣΟΥΜΕ δεδομένα, μεταξύ των οποίων ο λόγος για τον οποίο το getData αποκωδικοποιεί και στη συνέχεια κωδικοποιεί είναι επειδή στο Win7 πάντα αλλοίωνα την έξοδο κατά τον εντοπισμό σφαλμάτων, οπότε πρόσθεσα κάποια επεξεργασία κωδικοποίησης, δεν είναι αυτά το θέμα, η παρακάτω λειτουργία σύνδεσης είναι ο πυρήνας της σύνδεσης στο Weibo.
[mw_shl_code=java,true]def login(nick, pwd): print u"----------login----------" print "----------......----------" prelogin_url= «http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=%s&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.15)&_= 1400822309846' % nick preLogin = getData(prelogin_url) servertime = re.findall('"servertime":(.+?),' , preLogin)[0] pubkey = re.findall('"pubkey":"(.+?)",' , preLogin)[0] rsakv = re.findall('"rsakv":"(.+?)",' , preLogin)[0] nonce = re.findall('"nonce":"(.+?)",' , preLogin)[0] #print bytearray('xxxx','utf-8') su = base64.b64encode(urllib.quote(nick))        rsaPublickey= int(pubkey,16) κλειδί = rsa. PublicKey(rsaPublickey,65537) message = str(servertime) +'\t' + str(nonce) + '\n' + str(pwd) sp = binascii.b2a_hex(rsa.encrypt(message,key)) header = {'User-Agent' : 'Mozilla/5.0 (συμβατό; MSIE 9.0; Windows NT 6.1; ΟΥΑΟΥ64; Trident/5.0)'} param = { 'entry': 'weibo', 'gateway': '1', 'from': '', 'savestate': '7', 'userticket': '1',                'ssosimplelogin': '1', 'vsnf': '1', 'vsnval': '', 'su': su, 'service': 'miniblog', 'servertime': servertime, 'nonce': nonce, 'pwencode': 'rsa2', 'sp': sp, 'encoding': 'UTF-8', 'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack', 'returntype': 'META', 'rsakv' : rsakv, } s = postData('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)',param,header) try: urll = re.findall("locatio remove n.replace\(\'(.+?) \'\); " , s)[0] login=getData(urll) print u"--------- Η σύνδεση ήταν επιτυχής! ------- "print" ----------......---------- "εκτός από την εξαίρεση, e: print u" --------- η σύνδεση απέτυχε! -------" print "----------......----------" exit(0)[/mw_shl_code]Οι παράμετροι και οι αλγόριθμοι κρυπτογράφησης σε αυτό αντιγράφονται από το Διαδίκτυο, δεν καταλαβαίνω πολύ καλά, μάλλον είναι να ζητήσετε πρώτα μια χρονική σήμανση και δημόσιο κλειδί, μετά κρυπτογράφηση rsa και τέλος να επεξεργαστείτε την επεξεργασία και να την υποβάλετε στη διεπαφή σύνδεσης Sina, μετά την επιτυχή σύνδεση από τη Sina, θα επιστρέψει μια διεύθυνση Weibo, πρέπει να τη ζητήσετε, ώστε η κατάσταση σύνδεσης να τεθεί σε ισχύ πλήρως, Μετά την επιτυχή σύνδεση, τα επόμενα αιτήματα θα φέρουν το cookie του τρέχοντος χρήστη.
0×03 Καθορισμένο σχέδιο κόκκινου φακέλου
Αφού συνδεθώ με επιτυχία στο Weibo, ανυπομονώ να βρω έναν κόκκινο φάκελο για να τον δοκιμάσω πρώτα, φυσικά, πρώτα στο πρόγραμμα περιήγησης. Τελικά, βρήκα μια σελίδα με ένα κόκκινο κουμπί φακέλου, το F12 κάλεσε το πρόγραμμα εντοπισμού σφαλμάτων για να δει τι ζητούσε το πακέτο δεδομένων.

Μπορείτε να δείτε ότι η διεύθυνση του αιτήματος είναι http://huodong.weibo.com/aj_hongbao/getlucky, υπάρχουν δύο κύριες παράμετροι, η μία είναι το ouid, δηλαδή το κόκκινο αναγνωριστικό φακέλου, το οποίο φαίνεται στη διεύθυνση URL, η άλλη παράμετρος κοινής χρήσης καθορίζει εάν θα το μοιραστείτε στο Weibo και υπάρχει μια _t δεν ξέρω σε τι χρησιμεύει.
Εντάξει, τώρα θεωρητικά, μπορείτε να ολοκληρώσετε την εξαγωγή κόκκινων φακέλων υποβάλλοντας τρεις παραμέτρους σε αυτήν τη διεύθυνση URL, αλλά όταν υποβάλετε πραγματικά τις παραμέτρους, θα διαπιστώσετε ότι ο διακομιστής θα επιστρέψει ως δια μαγείας μια τέτοια συμβολοσειρά για εσάς:
[mw_shl_code=java,true] {"code":303403,"msg":"Λυπούμαστε, δεν έχετε άδεια πρόσβασης σε αυτήν τη σελίδα","data":[]}[/mw_shl_code] Μην πανικοβληθείτε αυτή τη στιγμή, σύμφωνα με την πολυετή εμπειρία μου στην ανάπτυξη ιστοσελίδων, ο προγραμματιστής του άλλου μέρους θα πρέπει να κρίνει τον παραπέμποντα, πολύ απλό, να αντιγράψει όλες τις κεφαλίδες του προηγούμενου αιτήματος.
[mw_shl_code=java,true]def getLucky(id): #抽奖程序 print u"--- draw red envelope from:"+str(id)+"---" print "----------......----------" if checkValue(id)==False: #不符合条件, αυτή είναι η συνάρτηση που επιστρέφει αργότερα        luckyUrl="http://huodong.weibo.com/aj_hongbao/getlucky" param={ 'ouid':id, 'share':0, '_t':0 } header= {                'Cache-Control':'no-cache', 'Content-Type':'application/x-www-form-urlencoded', 'origin':'http://huodong.weibo.com', 'Pragma':'no-cache', 'Referer': 'http://huodong.weibo.com/hongbao/'+str(id), 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, όπως το Gecko) Chrome/33.0.1750.146 BIDUBrowser/6.x Safari/537.36', 'X-Requested-With':'XMLHttpRequest' } res = postData(luckyUrl,param, header)[/mw_shl_code] Σε αυτή την περίπτωση, δεν υπάρχει πρόβλημα θεωρητικά, αλλά στην πραγματικότητα δεν υπάρχει πρόβλημα. Αφού ολοκληρωθεί η ενέργεια της κλήρωσης, πρέπει να κρίνουμε την κατάσταση και το επιστρεφόμενο res είναι μια συμβολοσειρά json, όπου ο κωδικός είναι 100000 είναι επιτυχής και αν είναι 90114, είναι το ανώτατο όριο της σημερινής λαχειοφόρου αγοράς και οι άλλες τιμές επίσης αποτυγχάνουν, οπότε:
[mw_shl_code=java,true]hbRes=json.loads(res)if hbRes["code"]=='901114': #今天红包已经抢完 print u"--------- έχει φτάσει στο ανώτατο όριο---------" print "----------......----------" log('lucky', str(id)+'---'+str(hbRes["code"])+'---'+hbRes["data"]["title"]) exit(0)elif hbRes["code"]=='100000':#成功 print u"---------Σας εύχομαι ευημερία---------" print "----------......----------"        log('success',str(id)+'---'+res) exit(0) if hbRes["data"] and hbRes["data"]["title"]: print hbRes["data"]["title"] print "----------......----------" log('lucky', str(id)+'---'+str(hbRes["code"])+'---'+hbRes["data"]["title"])else: print u"---------Request error---------" print "----------......----------" log('lucky', str(id)+'---'+res)[/mw_shl_code], όπου το log είναι επίσης μια συνάρτηση που προσαρμόζω, η οποία χρησιμοποιείται για την καταγραφή αρχείων καταγραφής:
[mw_shl_code=java,true]def log(τύπος,κείμενο): fp = open(type+'.txt','a') fp.write(κείμενο) fp.write('\r\n') fp.close()[/mw_shl_code]





Προηγούμενος:Σημειώσεις σχετικά με τα μέγιστα όρια μεταφόρτωσης PHP
Επόμενος:Λήψη επέκτασης memcache dll για PHP5.2, 5.3, 5.4, 5.5
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 13/2/2015 10:46:37 μ.μ. |
0×04 Ανίχνευση της λίστας των κόκκινων φακέλων
Μετά την επιτυχή δοκιμή μιας μεμονωμένης ενέργειας συλλογής κόκκινων φακέλων, είναι η βασική ενότητα μεγάλης κίνησης του προγράμματός μας - ανίχνευση της λίστας κόκκινων φακέλων, θα πρέπει να υπάρχουν πολλές μέθοδοι και είσοδοι για την ανίχνευση της λίστας κόκκινων φακέλων, όπως διάφορες λέξεις-κλειδιά αναζήτησης στο Weibo και ούτω καθεξής, αλλά χρησιμοποιώ την απλούστερη μέθοδο εδώ: ανίχνευση της λίστας κόκκινων φακέλων.
Στην αρχική σελίδα (http://huodong.weibo.com/hongbao της δραστηριότητας του κόκκινου φακέλου, μέσα από διάφορα σημεία περισσότερα, όλα μπορούν να παρατηρηθούν, αν και η λίστα συνδέεται πολύ, μπορεί να συνοψιστεί σε δύο κατηγορίες (εκτός από την πλουσιότερη λίστα κόκκινων φακέλων): θέμα και leaderboard.
Συνεχίζοντας να καλείτε το F12, αναλύστε τη μορφή και των δύο σελίδων, ξεκινώντας με μια λίστα επίκαιρων μορφών, όπως: http://huodong.weibo.com/hongbao/special_quyu
Μπορείτε να δείτε ότι οι πληροφορίες του κόκκινου φακέλου βρίσκονται σε ένα div με το όνομα info_wrap, επομένως χρειάζεται μόνο να ενεργοποιήσουμε τον πηγαίο κώδικα αυτής της σελίδας και, στη συνέχεια, να αρπάξουμε όλα τα περιτυλίγματα πληροφοριών και, στη συνέχεια, απλώς να το επεξεργαστούμε για να λάβουμε τη λίστα κόκκινων φακέλων αυτής της σελίδας, εδώ πρέπει να χρησιμοποιήσουμε μερικούς κανονικούς:
[mw_shl_code=java,true]def getThemeList(url,p):#主题红包 print u"--------- "+str(p)+"page---------" print "----------......----------" html=getData(url+'?p='+str(p)) pWrap= re.compile(r'<div class="info_wrap">(.+?) <span class="rob_txt"></span>',re. DOTALL) #h Λάβετε info_wrap το κανονικό pInfo=re.compile(r'.+<em class="num">(.+)</em>.+<em class="num">(.+)</em>.+<em class="num">(.+).</em>.+href="(.+)" class="btn"',re. DOTALL) #获取红包信息 List=pWrap.findall(html,re. DOTALL) n=len(Λίστα) if n==0: επιστροφή για i στο εύρος(n): #traverse όλα info_wrap div s=pInfo.match(Λίστα) #取得红包信息 info=list(s.groups(0))                info[0]=float(info[0].replace('\xcd\xf2','0000')) #现金,ten->0000 try: info[1]=float(info[1].replace('\xcd\xf2','0000')) #礼品价值 εκτός από την Εξαίρεση, π.χ.:                        info[1]=float(info[1].replace('\xd2\xda','00000000')) #礼品价值 info[2]=float(info[2].replace('\xcd\xf2','0000')) #已发送 if info[2]==0: info[2]=1 #防止除数为0 if info[1]==0: info[1]=1 #防止除数为0 info.append(info[0]/(info[2]+info[1])) #红包价值, cash/(αριθμός διεκδικητών + αξία βραβείου) # if info[0]/(info[2]+info[1])>100:                # print url luckyList.append(info) if 'class="page"' σε html:#存在下一页 p=p+1 getThemeList(url,p) #递归调用自己爬取下一页[/mw_shl_code]Είναι τόσο δύσκολο να πούμε ότι είναι τόσο δύσκολο, και χρειάστηκε πολύς χρόνος για να γράψω αυτές τις δύο προτάσεις. Υπάρχει επίσης μια πληροφορία στις πληροφορίες εδώ προσάρτηση [4], που είναι ο αλγόριθμός μου για να κρίνω χονδρικά την αξία των κόκκινων φακέλων, γιατί να το κάνω αυτό, επειδή υπάρχουν πολλοί κόκκινοι φάκελοι αλλά μπορούμε να τραβήξουμε μόνο τέσσερις φορές, στην απέραντη θάλασσα των τσαντών, πρέπει να βρούμε τους πιο πολύτιμους κόκκινους φακέλους και μετά να τους σχεδιάσουμε, εδώ είναι τρία δεδομένα για αναφορά: αξία μετρητών, αξία δώρου και αριθμός παραληπτών, προφανώς εάν τα μετρητά είναι μικρά και ο αριθμός των ατόμων που λαμβάνουν πολλά άτομα ή η αξία του βραβείου είναι εξαιρετικά υψηλή (μερικοί είναι ακόμη και τρελοί σε μονάδες εκατοντάδων εκατομμυρίων), Τότε δεν αξίζει να το αρπάξω, οπότε συγκρατήθηκα για πολλή ώρα και τελικά κατέληξα σε έναν αλγόριθμο για να μετρήσω το βάρος των κόκκινων φακέλων: αξία κόκκινου φακέλου = μετρητά / (αριθμός παραληπτών + αξία βραβείου).
Η αρχή της σελίδας του βαθμολογικού πίνακα είναι η ίδια, βρείτε τις ετικέτες κλειδιών και αντιστοιχίστε τις τακτικά.
[mw_shl_code=java,true]def getTopList(url,daily,p):#排行榜红包 print u"--------- "+str(p)+"page---------" print "----------......----------" html=getData(url+'?daily='+str(daily)+'& p='+str(p)) pWrap=re.compile(r'<div class="list_info">(.+?) <span class="list_btn"></span>',re. DOTALL) #h Λάβετε list_info το κανονικό pInfo=re.compile(r'.+<em class="num">(.+)</em>.+<em class="num">(.+)</em>.+<em class="num">(.+).</em>.+href="(.+)" class="btn rob_btn"',re. DOTALL) #获取红包信息 List=pWrap.findall(html,re. DOTALL) n=len(Λίστα) αν n==0: επιστροφή για i στο εύρος(n): #Iterate σε όλες τις info_wrap div s=pInfo.match(Λίστα) #取得红包信息 topinfo=list(s.groups(0))                info=list(topinfo) info[0]=topinfo[1].replace('\xd4\xaa','') #元->'' info[0]=float(info[0].replace('\xcd\xf2','0000')) #现金,10,>0000 info[1]=topinfo[2]. replace('\xd4\xaa','') #元->'' try: info[1]=float(info[1].replace('\xcd\xf2','0000')) #礼品价值 εκτός από την Εξαίρεση, π.χ.:                        info[1]=float(info[1].replace('\xd2\xda','00000000')) #礼品价值 info[2]=topinfo[0].replace('\xb8\xf6','') #个->'' info[2]=float(info[2].replace('\xcd\xf2','0000')) #已发送                if info[2]==0: info[2]=1 #防止除数为0 if info[1]==0: info[1]=1 #防止除数为0 info.append(info[0]/(info[2]+info[1])) #红包价值, cash/(αριθμός παραληπτών + αξία δώρου)                # αν info[0]/(info[2]+info[1])>100: # εκτυπώστε τη διεύθυνση url luckyList.append(info) αν 'class="page"' σε html:#存在下一页 p=p+1                getTopList(url;ημερήσια;p) #递归调用自己爬取下一页[/mw_shl_code]Εντάξει, τώρα μπορούμε να ανιχνεύσουμε με επιτυχία τη λίστα των δύο ειδικών σελίδων και το επόμενο βήμα είναι να λάβουμε τη λίστα των λιστών, δηλαδή τη συλλογή όλων αυτών των διευθύνσεων λίστας, και στη συνέχεια να τις αρπάξουμε μία προς μία:
[mw_shl_code=java,true]def getList(): print u"---------Find target---------" print "----------......----------" themeUrl={ #主题列表 'theme':'http://huodong.weibo.com/hongbao/theme',                 'pinpai':'http://huodong.weibo.com/hongbao/special_pinpai', 'daka':'http://huodong.weibo.com/hongbao/special_daka', 'youxuan':'http://huodong.weibo. com/hongbao/special_youxuan', 'qiye':'http://huodong.weibo.com/hongbao/special_qiye', 'quyu':'http://huodong.weibo.com/hongbao/special_quyu', 'meiti':'http: huodong.weibo.com/hongbao/special_meiti', 'hezuo':'http://huodong.weibo.com/hongbao/special_hezuo' } topUrl={ #排行榜列表 'mostmoney':'http://huodong.weibo. com/hongbao/top_mostmoney', 'mostsend':'http://huodong.weibo.com/hongbao/top_mostsend', 'mostsenddaka':'http://huodong.weibo.com/hongbao/top_mostsenddaka',                'mostsendpartner':'http://huodong.weibo.com/hongbao/top_mostsendpartner', 'cate':'http://huodong.weibo.com/hongbao/cate?type=', 'clothes':'http://huodong.weibo.com/ hongbao/cate?type=clothes', 'beauty':'http://huodong.weibo.com/hongbao/cate?type=beauty', 'fast':'http://huodong.weibo.com/hongbao/cate?type=fast', 'life':'http: huodong.weibo.com/hongbao/cate?type=life', 'digital':'http://huodong.weibo.com/hongbao/cate?type=digital', 'other':'http://huodong.weibo.com/hongbao/cate?type=other'                } for (theme,url) στο themeUrl.items(): print "----------"+theme+"----------" print url print "----------......----------"                getThemeList(url,1) για (top,url) στο topUrl.items(): print "----------"+top+"----------" print url print "----------......----------"                getTopList(url;0,1) getTopList(url,1,1)[/mw_shl_code]
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 13/2/2015 10:47:13 μ.μ. |
0×05 Κρίνετε τη διαθεσιμότητα κόκκινων φακέλων
Αυτό είναι σχετικά απλό, πρώτα αναζητήστε λέξεις-κλειδιά στον πηγαίο κώδικα για να δείτε αν υπάρχει ένα κόκκινο κουμπί αρπαγής φακέλου και, στη συνέχεια, μεταβείτε στην κατάταξη συλλογής για να δείτε ποια είναι η υψηλότερη εγγραφή, εάν οι περισσότεροι λαμβάνουν μόνο λίγα δολάρια, αντίο......
Η διεύθυνση για την προβολή της εγγραφής συλλογής είναι http://huodong.weibo.com/aj_hongbao/detailmore?page=1&type=2&_t=0&__rnd=1423744829265&uid=Red Αναγνωριστικό φακέλου

[mw_shl_code=java,true]def checkValue(id): infoUrl='http://huodong.weibo.com/hongbao/'+str(id) html=getData(infoUrl) if 'action-type="lottery"' σε html ή True: #存在抢红包按钮                logUrl="http://huodong.weibo.com/aj_hongbao/detailmore?page=1&type=2&_t=0&__rnd=1423744829265&uid="+id #查看排行榜数据 param={} header= { 'Cache-Control': 'no-cache', 'Content-Type':'application/x-www-form-urlencoded', 'Pragma':'no-cache', 'Referer':'http://huodong.weibo.com/hongbao/detail? uid='+str(id), 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, όπως το Gecko) Chrome/33.0.1750.146 BIDUBrowser/6.x Safari/537.36', 'X-Requested-With':'XMLHttpRequest' } res = postData(logUrl,param,header) pMoney=re.compile(r'<span class="money">(\d+?. +?) \xd4\xaa</span>',re. DOTALL) #h Αποκτήστε όλους τους τακτικούς list_info luckyLog=pMoney.findall(html,re. DOTALL) αν len(luckyLog)==0: maxMoney=0 αλλιώς: maxMoney=float(luckyLog[0]) αν maxMoney <χαμηλότερο: #记录中最大红包小于设定值 επιστροφή False else: print u"--------- χέρι επιβραδύνεται---------" print "----------......----------" επιστροφή false        επιστροφή True[/mw_shl_code]0×06 Εργασίες τελικής επεξεργασίας
Οι κύριες μονάδες είναι ήδη στη θέση τους και τώρα όλα τα βήματα πρέπει να συνδεθούν σε σειρά:
[mw_shl_code=java,true]def start(username,password,low,fromFile): gl=False lowest=low login(όνομα χρήστη, κωδικός πρόσβασης) if fromfile=='y': if os.path.exists('luckyList.txt'):                         try: f = file('luckyList.txt') newList = [] newList = p.load(f)                                print u'--------- load list---------' print "----------......----------" εκτός από το Exception, e: print u' απέτυχε να αναλύσει την τοπική λίστα, ανιχνεύοντας την ηλεκτρονική σελίδα. ' print "----------......----------" gl=True else: print u' δεν υπάρχει τοπικά luckyList.txt ανίχνευση διαδικτυακών σελίδων. ' print "----------......----------" gl=True if gl==True: getList() from operator import itemgetter                newList=sorted(luckyList, key=itemgetter(4),reverse=True) f = file('luckyList.txt', 'w') p.dump(newList, f) #把抓到的列表存到文件里, οπότε δεν χρειάζεται να πιάσετε το f.close() για τυχερό την επόμενη φορά newList: αν όχι 'http://huodong.weibo.com' στο lucky[3]: #不是红包 συνεχίστε να εκτυπώνετε lucky[3] id=re.findall(r'(\w*[0-9]+)\w*',lucky[3])                getLucky(id[0])[/mw_shl_code] Επειδή είναι πολύ ενοχλητικό να ανιχνεύετε τη λίστα κόκκινων φακέλων επανειλημμένα κάθε φορά που δοκιμάζεται, πρόσθεσα μια παράγραφο για να απορρίψετε την πλήρη λίστα στον κώδικα αρχείου, ώστε να μπορείτε να διαβάσετε την τοπική λίστα και να πιάσετε τον κόκκινο φάκελο στο μέλλον.
[mw_shl_code=java,true]if __name__ == "__main__": print u"------------------ Weibo Red Envelope Assistant------------------" print "---------------------v0.0.1---------------------" print u"------------- από @***----------------" print "-------------------------------------------------" try: uname=raw_input(u"Εισαγάγετε τον λογαριασμό σας στο Weibo: ".decode('utf-8').encode('gbk'))                pwd=raw_input(u"Εισαγάγετε τον κωδικό πρόσβασής σας στο Weibo: ".decode('utf-8').encode('gbk')) low=int(raw_input(u"Κόκκινος φάκελος για να λάβετε το μέγιστο ποσό μετρητών μεγαλύτερο από n: ".decode('utf-8').encode('gbk')))) fromfile=raw_input(u) Εάν θα χρησιμοποιηθεί η λίστα κόκκινων φακέλων στο luckyList.txt: (y/n) ".decode('utf-8').encode('gbk')) εκτός από την Εξαίρεση, e: print u" parameter error" print "----------......----------" print e                exit(0) print u"--------- program start---------" print "----------......----------" start(uname,pwd,low,fromfile) print u" --------- τέλος προγράμματος--------- "print "----------...... ----------" os.system('pause')[/mw_shl_code]
0×07 Πάμε!

0×07 Σύνοψη
Ο βασικός σκελετός του ανιχνευτή έχει ουσιαστικά ολοκληρωθεί, στην πραγματικότητα, υπάρχει ακόμα πολύς χώρος για αυτόν τον ανιχνευτή να παίξει σε πολλές λεπτομέρειες, όπως η τροποποίησή του για την υποστήριξη της σύνδεσης παρτίδας, όπως η βελτιστοποίηση του αλγόριθμου τιμής κόκκινου φακέλου, ο ίδιος ο κώδικας θα πρέπει επίσης να έχει πολλά μέρη για βελτιστοποίηση, αλλά με την ικανότητά μου, εκτιμώ ότι μπορώ να το αποκτήσω.
Στο τέλος, όλοι είδαν το αποτέλεσμα του προγράμματος, έγραψα εκατοντάδες γραμμές κώδικα, χιλιάδες λέξεις άρθρων και το μόνο που δούλεψα σκληρά για να αποκτήσω ήταν απλώς ένα σετ δίχρωμες μπάλες, Nima pit dad, πώς θα μπορούσε να είναι μια δίχρωμη μπάλα!! (Αφηγητής: Όσο περισσότερο μιλούσε ο συγγραφέας, τόσο πιο ενθουσιασμένος γινόταν, και πραγματικά έκλαιγε, και οι άνθρωποι γύρω του έπεισαν: Αδερφέ, δεν είναι έτσι, δεν είναι απλώς ένας κόκκινος φάκελος στο Weibo, χθες πονούσαν τα χέρια μου και δεν τίναξα έναν κόκκινο φάκελο WeChat.) )

Δημοσιεύτηκε στις 14/2/2015 7:14:33 π.μ. |
Πόσα χρήματα άρπαξες στη Λούλου;
Δημοσιεύτηκε στις 2/3/2016 1:48:27 μ.μ. |
Φαίνεται τόσο ψηλό
Δημοσιεύτηκε στις 7/3/2016 12:51:02 μ.μ. |
Δεν ξέρω αν είναι σοβαρό
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com