Die Qiita-Organisation von SDT wird immer heißer! Also habe ich versucht, irgendwie ein Ranking zu erstellen ~ (Was bedeutet das !!)
nnsnodnb/sdt-qiita-ranking | GitHub
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 !!
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 :; (∩´﹏`∩);:
from urllib.request import urlopen
from bs4 import BeautifulSoup
get_soup()
url = 'http://qiita.com/organizations/smartdt/members'
html = urlopen(url)
return = BeautifulSoup(html, 'html.parser')
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})
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.
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()
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.
main()
run(host = '0.0.0.0')
$ python hoge.py
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