A, B-Station Teilnehmerinformation Krabbeln
Die Crawling 10.01 b Station des Benutzers persönliche Informationen, darunter einen Spitznamen, Geschlecht, Kopf, um die Anzahl der Fans, die Anzahl der Spieler und dergleichen.
1 Import Requests 2 Import JSON 3. Import OS 4. 5. 6. Vip_type = {0: ' normaler Benutzer ' , 1: " kleines Mitglied " , 2: " Große Mitglieder ' } . 7 headers = { 8. ' Das Referer ' : ' https: // space.bilibili.com ' . 9 ' die User-- - Agent ' : ' die Mozilla / 5.0 (Windows NT 10.0; die WOW64) AppleWebKit / 537,36 (KHTML, wie der Gecko) das Chrom / 79.0.3945.130 Safari / 537,36 ' 10 } . 11 12 ist DEF download_face (URL, MID, Name): 13 ' '' Download Avatar ''' 14 Print ( ' den Benutzer Avatar Download ... ' ) 15 IF Nicht os.path.exists ( ' B Station user avatar ' ): 16 os.mkdir ( ' B Station user avatar ' ) # ein Verzeichnis für avatar erstellen . 17 IMG = requests.get (URL, headers = Header) .content # erhält einen binären Quellenkopf 18 ist mit Open ( ' B Station user avatar /{}_{}.jpg ' .format (MID, Name), 'wb' ) Als F: . 19 f.write (IMG) 20 21 ist DEF get_user_ele_info (URL): 22 ''' erhalten Informationen über Benutzer '' ' 23 ist jsonData = requests.get (URL) .json () [ ' Daten ' ] 24 jsonData = MID [ ' MID ' ] 25 name = jsonData [ ' name ' ] 26 Geschlecht = jsonData [ ' Sex ' ] 27 Ebene = jsonData [ ' Stufe '] 28 Zeichen = jsondata [' Sign ' ] 29 Amts = jsonData [ ' Official ' ] [ ' title ' ] 30 vip_num = jsonData [ ' VIP ' ] [ ' Typ ' ] 31 ist face_url = jsonData [ ' Gesicht ' ] 32 download_face (face_url, MID, name) # 33 ist Print ( ' user die UID: {} ' .format (MID)) 34 Druck ( ' user name: {} ' .format (name)) 35 Print ( ' Geschlecht: {} ' .format (Sex)) 36 Drucken ( ' User Level: {} ' .format (Stufe)) 37 [ Print ( ' Benutzer Typ: {} ' .format (vip_type.get (vip_num ))) 38 Druck ( ' Benutzer Unterschrift: {} ' .format (Zeichen)) 39 drucken ( ' user offizielle Zertifizierung: {} ' .format (offiziell)) 40 41 ist DEF get_user_follow (URL): 42 ' '' __jp3 erhalten die Benutzer besorgt über die Zahl und die Anzahl der Fans ' ‚‘ 43 [. 6: -1] = requests.get text_data (URL, headers = Header) .text # STR 44 # erworben Nicht - Standard - json - Datenformat, was die Zeichenfolge Abfangen Betrieb tun redundante Daten entfernen 45 jsonData = json. Lasten (text_data) # mit json Paket an Zeichenfolge nachgeladenen wird dict Typ 46 Daten jsonData = [ ' Daten ' ] 47 folgende Daten = [ ' folgende ' ] 48 Folger = Daten [ ' Folgers ' ] 49 Druck ( " user Folgenummer: {} ' .format (nach)) 50 drucken ( ' Benutzer Anzahl der Fans: {}' .Format (Nachfolger)) 51 52 ist DEF get_user_achieve (URL): 53 ''' __jp4 Leistungen erworben Benutzer, wie die Anzahl der Fans, ist berechtigt , wie Zahlen, die Zahl der anderen Spieler '' ' 54 ist text_data = requests.get (URL, headers = Header ) .text [6:. -1 ] 55 jsonData = json.loads (text_data) 56 Daten jsonData = [ ' Daten ' ] 57 ist VIDEO_VIEWS = Daten [ ' Archiv ' ] [ ' Ansicht ' ] 58 Likes = Daten [ ' Likes ' ] 59 drucken ( 'Wie die Anzahl der Benutzer berechtigt: {} ' .format (Likes)) 60 Drucken ( ' User - Video Player Nummer: {} ' .format (VIDEO_VIEWS)) 61 62 63 ist DEF main (): 64 für I in Reichweite (1,11 ) : 65 url_ele_info = ' https://api.bilibili.com/x/space/acc/info?mid={}&jsonp=json ' .format (I) 66 url_follow = ' https://api.bilibili.com/ X / Relation / STAT? VMID = {} = & JSONP JSONP der Rückruf & JP3 = __ ' .format (I) 67 url_achieve = 'https://api.bilibili.com/x/space/upstat?mid={}&jsonp=jsonp&callback=__jp4 ' .format (i) 68 get_user_ele_info (url_ele_info) 69 get_user_follow (url_follow) 70 get_user_achieve (url_achieve) 71 Druck ( ' - ' * 100 ) , 72 73 , wenn __name__ == ' __main__ ' : 74 main ()
Das Ergebnis:
Benutzeravatar:
II.
Fortgesetzt werden. . .