[PYTHON] Ich habe versucht, eine Rangliste zu erstellen, indem ich das Mitgliederteam der Organisation abgekratzt habe

Die Qiita-Organisation von SDT wird immer heißer! Also habe ich versucht, irgendwie ein Ranking zu erstellen ~ (Was bedeutet das !!)

Quellcode

nnsnodnb/sdt-qiita-ranking | GitHub

Beispiel für eine öffentliche Seite

スクリーンショット 2016-07-23 午前1.22.55.png

Es ist fast so. CA ... Ich kann nur die in SDT sehen, aber in Zukunft denke ich darüber nach oder nicht, eine API zu erstellen, damit ich in jeder Organisation Ranglisten erhalten kann, wenn ich Freizeit habe !!

Schaben

Paket

requirements.txt


beautifulsoup4==4.5.0
bottle==0.12.9
Jinja2==2.8
MarkupSafe==0.23

Fragen Sie nicht, ob Sie Jinja2 oder etwas anderes verwendet haben :; (∩´﹏`∩);:

Importieren Sie das Paket ♪

from urllib.request import urlopen
from bs4 import BeautifulSoup

Setze die Teile zusammen

get_soup()


url = 'http://qiita.com/organizations/smartdt/members'
html = urlopen(url)
return = BeautifulSoup(html, 'html.parser')

Mitgliederliste und Anzahl der Beiträge

get_contribution()


soup = get_soup()

contribution_array = {}
# organizationMemberList_Holen Sie sich alle Li-Tags der Artikelklasse
members = soup.findAll('li', class_='organizationMemberList_item')

for member in members:
    #Holen Sie sich das erste Tag für jedes Mitglied
    a = member.find('a')
    #Organisationsmitgliedsliste für jedes Mitglied_Ruft das erste div-Tag der memberProfile-Klasse ab
    profiles = member.find('div', 'organizationMemberList_memberProfile')
    #OrganizationMemberList aus den oben erhaltenen div-Tags_Holen Sie sich alle div-Tags der memberStats-Klasse und geben Sie das zweite an
    contribute = profiles.findAll('div', 'organizationMemberList_memberStats')[1]

    # a.attrs['href'] -> nnsnodnb
    name = a.attrs['href'].split('/')[1]
    # contribute.text -> 50 Contribution
    number = int(contribute.text.split(' Con')[0])
    
    contribution_array.update({name: number})

Mitgliedssymbol

get_membericon()


soup = get_soup()

icons = {}
# organizationMemberList_Holen Sie sich alle IMG-Tags der Symbolklasse
member_icons = soup.findAll('img', 'organizationMemberList_icon')
# organizationMemberList_Holen Sie sich alle Li-Tags der Artikelklasse
members = soup.findAll('li', class_='organizationMemberList_item')

for index in range(len(members)):
    a = members[index].find('a')
    name = a.attrs['href'].split('/')[1]
    #Extrahieren Sie das src-Attribut aus jedem Mitglied der Mitgliedersymbolliste
    icon = member_icons[index].attrs['src']

    icons.update({name: icon})

Dieses Mal wird "Name" als Schlüssel festgelegt, um die ** Mitgliederliste und die Anzahl der Beiträge ** und das ** Mitgliedssymbol ** in Beziehung zu setzen.

Nach Rang sortieren

Ich verwende ein Wörterbuch, weil ich in einer Liste keine Beziehung zwischen "Schlüssel" und "Wert" haben kann. Da das Wörterbuch jedoch nur ein Wörterbuch ist, wird es nicht in der richtigen Reihenfolge ausgegeben. Weinen wollen Es hat also die Form, in der richtigen Reihenfolge herauszunehmen und die Liste einzugeben. Vergessen Sie auch nicht "reverse ()", da die Daten in aufsteigender Reihenfolge hinzugefügt werden, wenn Sie sie treffen.

ranking()


contribution = get_contribution()

names, numbers = [], []
for key, value in sorted(contribution.items(), key=lambda x:x[1]):
    names.append(key)
    numbers.append(value)
    
user_icons = get_membericon()

names.reverse()
numbers.reverse()

In Vorlage gießen

Diesmal habe ich "Bottle" als Webframework verwendet. Es gibt viele Möglichkeiten, es zu verwenden, wenn Sie googeln! Sollte sein!

from bottle import template, get, run

Grundsätzlich ist das in Ordnung

Flow zur Vorlage


return template('hoge')
return template('foo', name = name)

Wenn Sie es so machen, wird es überschaubar sein ~ Erstellen Sie für "hoge" und "foo" einen Ordner "views" im Anwendungsverzeichnis und erstellen Sie unten "hoge.tpl" und "foo.tpl"! Gleich wie HTML

Wenn Sie Python-Code in "hoge.tpl" ausführen, können Sie ihn mit "%" ausführen. Wenn Sie "template" ("foo", name = name) "mögen, können Sie diese in" hoge.tpl "durch" {{name}} "ersetzen. ~~ Schnurrbart Es ist so wie es ist. ~~

Wenn Sie die Schleife usw. mit "for" oder "if" beenden möchten, können Sie Folgendes tun

für Probe


% for i in range(10):
% #Ausgang zum Terminal
% print(i)
% end

wenn Probe


% if name == 'nnsnodnb':
% <p>Yaho ~!</p>
% else:
% <p>Wer bist du wwwww</p>
% end

Immerhin fühlt es sich ohne Einrückung schlecht an! !! Natürlich können Sie auch "hoge.tpl" mit Einrückung schreiben.

Wenn Sie so locker codieren, wird eine Seite wie ein Beispiel für eine öffentliche Seite erstellt.

Flaschenausführung

main()


run(host = '0.0.0.0')
$ python hoge.py

Zusammenfassung

Allein durch die Existenz einer solchen Sache kann die Kampfkraft eines jeden sichtbar gemacht werden und das Ziel wurde lose sichtbar gemacht!

Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar oder bearbeiten Sie die Anfrage!

Recommended Posts

Ich habe versucht, eine Rangliste zu erstellen, indem ich das Mitgliederteam der Organisation abgekratzt habe
[Python] Ich habe das Tagebuch eines Mannes im ersten Jahr des Arbeitslebens analysiert und das Arbeitsleben positiv / negativ beurteilt.
Ich habe ein Tool zum automatischen Sichern der Metadaten der Salesforce-Organisation erstellt
〇✕ Ich habe ein Spiel gemacht
Ich habe AI im Netz patrouillieren lassen und einen Webdienst für das Gadget-Ranking erstellt, der einmal pro Woche aktualisiert wird
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ich habe einen Befehl zum Markieren des Tabellenclips gegeben
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 1)
Ich habe ein VGG16-Modell mit TensorFlow gemacht (unterwegs)
Ich habe einen Python-Text gemacht
Ich habe einen Zwietrachtbot gemacht
Ich habe ein Punktbild des Bildes von Irasutoya gemacht. (Teil 2)
Ich habe Chatbot mit LINE Messaging API und Python erstellt
Ich habe einen Linienbot erstellt, der das Geschlecht und das Alter einer Person anhand des Bildes errät
Ich habe versucht, ein Programm zu erstellen, um die Fehlersuche von Saiseriya zu lösen (Hinweis)
Ich habe eine einfache Schaltung mit Python gemacht (AND, OR, NOR, etc.)
Ich möchte die Ausführungszeit aufzeichnen und ein Protokoll führen.
Ich habe eine einfache Netzwerkkamera hergestellt, indem ich ESP32-CAM und RTSP kombiniert habe.
Ich habe ein Spiel namens Battle Ship mit Pygame und Tkinter gemacht
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Ich habe mit Python, Flask und Heroku ein Nyanko-Tweet-Formular erstellt
Ich ließ RNN Sin Wave lernen und sagte es voraus: Hyper-Parameter-Anpassung
Ich lockerte die Bedingungen ein wenig und ließ optuna die Zahl lösen
Ich habe einen schlaffen Bot gemacht, der mich über die Temperatur informiert
Ich habe versucht, ein Gerüstwerkzeug für Python Web Framework Bottle zu erstellen
Ich habe einen Discord-Chat-Lesebot erstellt, indem ich das Erscheinungsbild nachgeahmt habe
Ich habe den Befehl gegeben, einen farbenfrohen Kalender im Terminal anzuzeigen
Ich habe Chatbot mit der LINE Messaging API und Python (2) ~ Server ~ erstellt
Ich habe ein Programm erstellt, das den Tierkreis mit tkinter automatisch berechnet
Ich habe einen Chat-Chat-Bot mit Tensor2Tensor erstellt und diesmal hat es funktioniert
[Kaggle] Ich habe mit dem Titanic-Tutorial eine Sammlung von Problemen erstellt
Ich habe eine C ++ - Lernseite erstellt
Ich habe einen Line-Bot mit Python gemacht!
Ich habe ein CUI-basiertes Übersetzungsskript erstellt (2)
Ich habe einen Wikipedia Gacha Bot gemacht
Ich habe mit Python eine Lotterie gemacht.
Ich habe ein CUI-basiertes Übersetzungsskript erstellt
Ich habe mit Python einen Daemon erstellt
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
Ich habe einen Kalender erstellt, der den Verteilungsplan von Vtuber automatisch aktualisiert
[Django] Erstellt ein Feld zur Eingabe von Daten mit 4-stelligen Zahlen
Ich habe einen Küchentimer erstellt, der in der Statusleiste angezeigt wird!
Ich habe ein Netzwerk erstellt, um Schwarzweißbilder in Farbbilder umzuwandeln (pix2pix)
Ich habe einen einfachen Timer erstellt, der vom Terminal aus gestartet werden kann
Ich habe ein Programm erstellt, um einzugeben, was ich gegessen habe, und um Kalorien und Zucker anzuzeigen
Ich habe GAN mit Keras gemacht, also habe ich ein Video des Lernprozesses gemacht.
Ich habe eine Bibliothek konoha gemacht, die den Tokenizer auf ein schönes Gefühl umstellt
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe einen Fehler beim Abrufen der Hierarchie mit MultiIndex von Pandas gemacht
Ich habe eine Funktion erstellt, um die Bewegung eines zweidimensionalen Arrays (Python) zu sehen.
[Python] Ich habe einen Web-Scraping-Code erstellt, der automatisch den Nachrichtentitel und die URL von Nihon Keizai Shimbun erfasst.
Ich habe einen neuen AWS S3-Eimer hergestellt
Ich habe ein Dash-Docset für Holoviews erstellt
Ich habe ein Pay-Management-Programm in Python erstellt!
Ich berührte "Orator" und machte mir eine Notiz
Ich habe mit Python einen Zeichenzähler erstellt
Anfänger: Ich habe einen Launcher mit dem Wörterbuch erstellt