Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 13448|Antwort: 5

Wie man rote Umschläge wissenschaftlich bekommt: Am Ende des Jahres kannst du reich werden und ein Programm schreiben, um rote Umschläge zu bekommen

[Link kopieren]
Veröffentlicht am 13.02.2015 22:44:10 | | | |
0×00 Hintergrund

Wie sind die roten Umschläge? Der Sohn seines Bruders, Huer, sagte: "Das Geld ist fast vergleichbar. Bruder und Tochter Dao Yun sagten: "Es ist nicht so gut wie meine Tante wegen des Windes." "Jeder versteht den Hintergrund, es ist Neujahr, und es ist der Tag, an dem rote Umschläge am Himmel fliegen. Zufällig habe ich vor zwei Tagen Python gelernt und war begeisterter, also habe ich das Crawlen von Weibo-roten Umschlägen immer wieder studiert, warum Weibo-rote Umschläge statt Alipay-rote Umschläge, weil ich nur das Web verstehe, und wenn ich die Energie habe, könnte ich in Zukunft auch den Whack-a-Mole-Algorithmus studieren.
Da ich ein Anfänger in Python bin, ist dieses Programm auch das dritte Programm, das ich nach dem Erlernen von Python geschrieben habe, also fragt bitte nicht persönlich nach, ob es eine Grube im Code gibt, der Fokus liegt auf der Idee. Wenn es eine Grube in der Idee gibt, dann steckt sie bitte nicht persönlich an, ihr seht, IE hat das Gesicht, sich als Standardbrowser selbst einzustellen, ich schreibe einen schlechten Artikel, das ist auch akzeptabel......
Ich benutze Python 2.7, und es wird gesagt, dass es einen großen Unterschied zwischen Python 2 und Python 3 gibt.
0×01 Ideen
Ich war zu faul, es in Worte zu fassen, also habe ich eine Skizze gezeichnet, und jeder sollte es verstehen können.
Zunächst einmal die alte Regel: Führe zuerst eine Bibliothek ein, von der du nicht weißt, dass sie nützlich ist, auf die du aber nicht verzichten kannst:
[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] Dann deklariere einige weitere Variablen, die du später verwenden musst:

[mw_shl_code=java,true]reload(sys)sys.setdefaultencoding('utf-8&') #将字符编码置为utf-8luckyList=[] #红包列表lowest=10 #能忍受红包领奖记录最低为多少[/mw_shl_code]Hier wird eine rsa-Bibliothek verwendet, die standardmäßig nicht in Python enthalten ist. Muss es installieren :https://pypi.python.org/pypi/rsa/

Nach dem Herunterladen führen wir setpy.py Installation durch und dann können wir mit den Entwicklungsschritten beginnen.
0×02 Weibo-Login
Das Greifen roter Umschläge muss nach dem Einloggen erfolgen, daher muss es eine Login-Funktion geben; der Login ist nicht der Schlüssel, der Schlüssel ist die Aufbewahrung von Cookies, hier ist die Zusammenarbeit mit der Cookielib erforderlich.
[mw_shl_code=java,true]cj = cookielib. CookieJar()opener = urllib2.build_opener(urllib2. HTTPCookieProcessor(cj))urllib2.install_opener(Opener)[/mw_shl_code] Auf diese Weise werden alle Netzwerkoperationen mit Opener den Zustand der Cookies behandelt, auch wenn ich nicht viel darüber weiß, aber es fühlt sich großartig an.
Als Nächstes müssen wir zwei Module kapseln, eines ist das Datenerfassungsmodul, das einfach zum HER-Daten verwendet wird, und das andere zum POST-Daten.
[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') gibt Text außer Ausnahme zurück, z.B.:                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() zurück Text außer Ausnahme, z.B.: print u'Request exception, URL: '+url[/mw_shl_code] Mit diesen beiden Modulen können wir Daten GET und POSTEN, wobei der Grund, warum getData decodiert und dann kodiert, darin besteht, dass ich unter Win7 beim Debuggen immer die Ausgabe vermasselt habe, also habe ich etwas Codierungsverarbeitung hinzugefügt, das ist nicht der Punkt, die untenstehende Login-Funktion ist der Kern des Weibo-Logins.
[mw_shl_code=java,true]Def Login(Nick, PWD): Drucken u"----------login----------" drucken Sie "----------......----------" 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) key = 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 (kompatibel; MSIE 9.0; Windows NT 6.1; WOW64; 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) drucken u"--------- Anmeldung erfolgreich! ------- "drucken" ----------......---------- "außer Ausnahme, z.B.: drucken u" --------- Login fehlgeschlagen! -------" druckt "----------......----------" exit(0)[/mw_shl_code] Die Parameter und Verschlüsselungsalgorithmen sind aus dem Internet kopiert, ich verstehe das nicht so gut, wahrscheinlich geht es darum, zuerst einen Zeitstempel und einen öffentlichen Schlüssel anzufordern, dann eine RSA-Verschlüsselung durchzuführen und schließlich die Verarbeitung zu verarbeiten und an die Sina-Login-Schnittstelle zu senden. Nach erfolgreicher Anmeldung von Sina aus wird eine Weibo-Adresse zurückgegeben, die man anfordern muss, damit der Login-Status vollständig wirksam wird, Nach erfolgreichem Login enthalten nachfolgende Anfragen das Cookie des aktuellen Benutzers.
0×03 Designierte rote Umschlagzeichnung
Nachdem ich mich erfolgreich bei Weibo eingeloggt habe, kann ich es kaum erwarten, zuerst einen roten Umschlag zu finden, um es natürlich zuerst im Browser auszuprobieren. Schließlich fand ich eine Seite mit einem roten Umschlag-Button, F12 rief den Debugger herbei, um zu sehen, was das Datenpaket anforderte.

Du siehst, dass die Adresse der Anfrage http://huodong.weibo.com/aj_hongbao/getlucky ist, es gibt zwei Hauptparameter: einer ist Ouid, also die rote Envelope-ID, die in der URL zu sehen ist, der andere Share-Parameter bestimmt, ob man sie an Weibo teilt, und es gibt eine _t Ich weiß nicht, wofür sie ist.
Okay, theoretisch können Sie die Extraktion der roten Umschläge abschließen, indem Sie drei Parameter an diese URL eingeben, aber wenn Sie die Parameter tatsächlich eingeben, werden Sie feststellen, dass der Server Ihnen auf magische Weise eine solche Zeichenkette zurückgibt:
[mw_shl_code=java, wahr] {"code":303403,"msg":"Entschuldigung, Sie haben keine Berechtigung, auf diese Seite zuzugreifen","data":[]}[/mw_shl_code] Keine Panik, laut meiner vielen Jahre Erfahrung in der Webentwicklung sollte der Programmierer der Gegenseite den Referenten beurteilen, ganz einfach: Kopieren Sie alle Header der vorherigen Anfrage.
[mw_shl_code=java,true]def getLucky(id): #抽奖程序 drucke u"--- ziehe roten Umschlag von:"+str(id)+"---" drucke "----------......----------" wenn checkValue(id)==False: #不符合条件, das ist die Funktion return later        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, wie Gecko) Chrome/33.0.1750.146 BIDUBrowser/6.x Safari/537.36', 'X-Requested-With':'XMLHttpRequest' } res = postData(luckyUrl,param, Header)[/mw_shl_code] In diesem Fall gibt es theoretisch kein Problem, aber tatsächlich gibt es kein Problem. Nachdem die Lotterieaktion abgeschlossen ist, müssen wir den Status beurteilen, und die zurückgegebene Res ist eine JSON-Zeichenkette, wobei der Code 100000 erfolgreich ist, und wenn es 90114 ist, ist dies das obere Limit der heutigen Lotterie, und die anderen Werte sind ebenfalls fehlgeschlagen, also:
[mw_shl_code=java,true]hbRes=json.loads(res)if hbRes["code"]=='901114': #今天红包已经抢完 drücke u"--------- hat das obere Limit erreicht---------" drucke "----------......----------" log('lucky', str(id)+'---'+str(hbRes["code"])+'---'+hbRes["data"]["title"]) exit(0)elif hbRes["code"]=='100000':#成功 drucken u"---------Ich wünsche dir Wohlstand---------" drucke "----------......----------"        log('success',str(id)+'---'+res) exit(0) if hbRes["data"] und 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], wobei das Log ebenfalls eine Funktion ist, die ich anpasse und die zur Aufzeichnung von Logs verwendet wird:
[mw_shl_code=java,true]Def log(type,text): fp = open(type+'.txt','a') fp.write(text) fp.write('\r\n') fp.close()[/mw_shl_code]





Vorhergehend:Anmerkungen zu den maximalen PHP-Upload-Limits
Nächster:memcache dll-Erweiterung Download für PHP5.2, 5.3, 5.4, 5.5
 Vermieter| Veröffentlicht am 13.02.2015 22:46:37 |
0×04 Durchsucht die Liste der roten Umschläge
Nach dem erfolgreichen Test einer einzelnen roten Umschlag-Sammelaktion ist es das zentrale Big-Move-Modul unseres Programms – beim Durchsuchen der roten Umschlagliste sollte es viele Methoden und Eingänge geben, um die rote Umschlagliste zu crawlen, wie verschiedene Weibo-Suchbegriffe und so weiter, aber ich verwende hier die einfachste Methode: das Durchsuchen der roten Umschlagliste.
Auf der Startseite (http://huodong.weibo.com/hongbao der roten Umschlag-Aktivität, durch verschiedene Punkte mehr, können alle beobachtet werden, obwohl die Liste stark miteinander verbunden ist, kann sie in zwei Kategorien zusammengefasst werden (außer der reichsten roten Umschlagliste): Thema und Bestenliste.
Indem man F12 weiter herbeiruft, analysiert man das Format beider Seiten, beginnend mit einer Liste thematischer Formen, wie zum Beispiel: http://huodong.weibo.com/hongbao/special_quyu
Sie können sehen, dass die Informationen des roten Envelopes in einem Div namens info_wrap sind, daher müssen wir nur den Quellcode dieser Seite aktivieren, dann alle Infowraps abnehmen und es einfach verarbeiten, um die rote Envelope-Liste dieser Seite zu erhalten, hier müssen wir einige reguläre Variablen verwenden:
[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">(.+?) <Klasse übergehen="rob_txt">',</span> re. DOTALL) #h Erhalte info_wrap die reguläre pInfo=re.compile(r'.+<em class="num">(.+)</em>.+<em class="num">(.+)</em>.+<em class="num">(.+).</em>.+href="(.+)" klasse="btn"',re. DOTALL) #获取红包信息 List=pWrap.findall(html,re. DOTALL) n=len(List) if n==0: return for i in range(n): #traverse all info_wrap div s=pInfo.match(List) #取得红包信息 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')) #礼品价值 außer Ausnahme, e:                        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/(Anzahl der Anspruchsberechtigten + Preiswert) # if info[0]/(info[2]+info[1])>100:                # URL ausdrucken luckyList.append(info) wenn 'class="page"' in html:#存在下一页 p=p+1 getThemeList(url,p) #递归调用自己爬取下一页[/mw_shl_code]Es ist so schwer zu sagen, dass es so schwierig ist, und es hat lange gedauert, diese beiden Sätze zu schreiben. Es gibt auch eine Information in den Infos hier anhängend [4], das ist mein Algorithmus, um den Wert roter Umschläge grob zu beurteilen. Warum sollte man das tun? Es gibt viele rote Umschläge, aber wir können nur viermal ziehen. In dem riesigen Meer von Taschen müssen wir die wertvollsten roten Umschläge finden und dann ziehen. Hier sind drei Daten zur Orientierung: Barwert, Geschenkwert und Anzahl der Empfänger. Offensichtlich, wenn das Bargeld klein ist und die Anzahl der Empfänger viele Personen oder der Preis sehr hoch ist (manche sind sogar verrückt in Einheiten von mehreren hundert Millionen). Dann lohnt es sich nicht, sie zu greifen, also habe ich lange zurückgehalten und schließlich einen Algorithmus entwickelt, um das Gewicht roter Umschläge zu messen: Der Wert des roten Umschlags = Bargeld / (Anzahl der Empfänger + Preiswert).
Das Prinzip der Bestenliste ist dasselbe: Finde die Schlüssel-Tags und passe sie regelmäßig auf.
[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">(.+?) <Klasse überspannen="list_btn">',</span> re. DOTALL) #h Erhalte list_info die reguläre pInfo=re.compile(r'.+<em class="num">(.+)</em>.+<em class="num">(.+)</em>.+<em class="num">(.+).</em>.+href="(.+)" klasse="btn rob_btn"',re. DOTALL) #获取红包信息 List=pWrap.findall(html,re. DOTALL) n=len(List) if n==0: return for i in Range(n): #Iterate durch alle info_wrap div s=pInfo.match(List) #取得红包信息 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')) #礼品价值 außer Ausnahme, e:                        info[1]=float(info[1].replace('\xd2\xda','000000000')) #礼品价值 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])) #红包价值, Bargeld/(Anzahl der Empfänger + Geschenkwert)                # if info[0]/(info[2]+info[1])>100: # URL luckyList.append(info) drucken, wenn 'class="page"' in html:#存在下一页 p=p+1                getTopList (URL, täglich, p) #递归调用自己爬取下一页[/mw_shl_code]Okay, jetzt können wir die Liste der beiden speziellen Seiten erfolgreich crawlen, und der nächste Schritt ist, die Liste der Listen, also die Sammlung all dieser Listenadressen, zu holen und sie dann einzeln zu holen:
[mw_shl_code=java,true]def getList(): print u"---------Find Target---------" drucke "----------......----------" 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'                } für (theme,URL) in themeUrl.items(): drucken "----------"+theme+"---------- drucken URL drucken "----------......----------"                getThemeList(url,1) für (top,url) in topUrl.items(): drucken Sie "----------"+top+"----------" drucken URL drucken "----------......----------"                getTopList(url,0,1) getTopList(url,1,1)[/mw_shl_code]
 Vermieter| Veröffentlicht am 13.02.2015 22:47:13 |
0×05 Beurteilen Sie die Verfügbarkeit der roten Umschläge
Das ist relativ einfach: Zuerst suche im Quellcode nach Schlüsselwörtern, um zu sehen, ob es einen roten Umschlag-Griff-Button gibt, und geh dann zum Sammlungsranking, um zu sehen, was der höchste Eintrag ist; wenn der höchste nur ein paar Dollar erhält, auf Wiedersehen......
Die Adresse, um den Sammlungsdatensatz einzusehen, lautet http://huodong.weibo.com/aj_hongbao/detailmore?page=1&type=2&_t=0&__rnd=1423744829265&uid=Red Umschlag-ID

[mw_shl_code=java,true]def checkValue(id): infoUrl='http://huodong.weibo.com/hongbao/'+str(id) html=getData(infoUrl) if 'action-type="lottery"' in html oder 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, wie 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 Alle list_info Stammkunden luckyLog=pMoney.findall(html,re. DOTALL) if len(luckyLog)==0: maxMoney=0 sonst: maxMoney=float(luckyLog[0]) if maxMoney <niedrigste: #记录中最大红包小于设定值 zurückgeben Falsch, sonst: Druck u"--------- Hand verlangsamt sich---------" Druck "----------......----------" Zurück falsch        return True[/mw_shl_code]0×06 Fertigstellung
Die Hauptmodule sind bereits vorhanden, und nun müssen alle Schritte in Reihe geschaltet werden:
[mw_shl_code=java,true]def start(username,password,low,fromFile): gl=False lowest=low login(username, password) if fromfile=='y': if os.path.exists('luckyList.txt'):                         try: f = file('luckyList.txt') newList = [] newList = p.load(f)                                U'--------- Ladeliste ausdrucken---------' "----------......----------" drucken, außer Ausnahme, z.B.: Print u' konnte die lokale Liste nicht parsen und crawle die Online-Seite. ' drucken "----------......----------" gl=True sonst: print u' existiert nicht lokal luckyList.txt Crawling von Online-Seiten. ' drucken "----------......----------" 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) #把抓到的列表存到文件里, also musst du f.close() nicht für lucky in beim nächsten Mal fangen newList: If not 'http://huodong.weibo.com' in lucky[3]: #不是红包 fortsetzen, drucken lucky[3] id=re.findall(r'(\w*[0-9]+)\w*',lucky[3])                getLucky(id[0])[/mw_shl_code] Da es sehr umständlich ist, die rote Umschlagliste jedes Mal wiederholt zu durchsuchen, habe ich einen Absatz hinzugefügt, um die vollständige Liste in den Dateicode zu legen, damit man die lokale Liste lesen und später den roten Umschlag greifen kann.
[mw_shl_code=java,true]wenn __name__ == "__main__": drucke u"------------------ Weibo Red Envelope Assistant------------------" drucke "---------------------v0.0.1---------------------" drucke u"------------- von @***----------------" drucken "-------------------------------------------------" versuchen: uname=raw_input(u"Bitte gib dein Weibo-Konto ein: ".decode('utf-8').encode('gbk'))                pwd=raw_input(u"Bitte geben Sie Ihr Weibo-Passwort ein: ".decode('utf-8').encode('gbk')) low=int(raw_input(u"Roter Umschlag, um das maximale Geld größer als n zu erhalten: ".decode('utf-8').encode('gbk')))))) fromfile=raw_input(u) Ob die rote Umschlagliste in der luckyList.txt verwendet wird: (y/n) ".decode('utf-8').encode('gbk')) außer Ausnahme, e: drucken u" Parameter error" drucken "----------......----------" drucken e                exit(0) drucken u"--------- program start---------" drucken "----------......----------" start(uname,pwd,low,fromfile) drucken u" --------- programm end--------- "drucken"----------...... ----------" os.system('pause')[/mw_shl_code]
0×07 Los geht's!

0×07 Zusammenfassung
Das grundlegende Skelett des Crawlers ist im Grunde abgeschlossen, tatsächlich gibt es noch viel Spielraum für diesen Crawler in vielen Details, wie etwa die Modifikation für Batch-Login, zum Beispiel die Optimierung des Algorithmus für den roten Envelope-Wert; der Code selbst sollte auch viele Möglichkeiten zur Optimierung haben, aber mit meiner Fähigkeit schätze ich, dass ich das schaffen kann.
Am Ende sah jeder das Ergebnis des Programms, ich schrieb hunderte Zeilen Code, tausende Wörter Artikel, und alles, wofür ich hart arbeitete, war nur ein Set zweifarbiger Bälle, Nima pit dad, wie konnte das ein zweifarbiger Ball sein!! (Erzähler: Je mehr der Autor sprach, desto aufgeregter wurde er, und er weinte tatsächlich, und die Leute um ihn herum überzeugten: Bruder, so ist das nicht, ist das nicht nur ein roter Weibo-Umschlag, gestern hatten meine Hände weh, und ich habe keinen roten WeChat-Umschlag geschüttelt.) )

Veröffentlicht am 14.02.2015 07:14:33 |
Wie viel Geld hast du in Loulou ergattert?
Veröffentlicht am 02.03.2016 13:48:27 |
Sieht so groß aus
Veröffentlicht am 07.03.2016 12:51:02 |
Ich weiß nicht, ob es ernst ist
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com