Wenn das Linkziel durch einen relativen Pfad in HTML beschrieben wird, verwenden Sie "urllib.parse.urljon ()", um den absoluten Pfad abzurufen.
from urllib.parse import urljoin
base = "http://exsample.com/html/a.html"
compurl = lambda q: print(urljoin(base,q))
compurl("b.html")
compurl("sub/c.html")
compurl("../index.html")
compurl("../img/hoge.png ")
Ausführungsergebnis
http://example.com/html/b.html http://example.com/html/sub/c.html http://example.com/index.html http://example.com/img/hoge.png
pass
AnweisungIn Python werden Verarbeitungsblöcke durch Einrücken definiert. Wenn also keine Verarbeitung durchgeführt werden muss, verschwindet der Verarbeitungsblock selbst. Daher wird die Anweisung "pass" verwendet, um explizit zu beschreiben, dass nichts zu tun ist.
with open('exsample.txt', 'w'):
pass
Beschreiben Sie mit "if", "elif" und "else". Wenn Sie durch einen bedingten Ausdruck in zwei Verarbeitungsblöcke verzweigen, kann dies außerdem mithilfe eines ternären Operators beschrieben werden.
wenn bedingter Ausdruck 1:
<Verarbeitungsblock 1>
#Processing wird ausgeführt, wenn der bedingte Ausdruck 1 True ist
elif bedingter Ausdruck 2:
<Verarbeitungsblock 2>
#Processing wird ausgeführt, wenn der bedingte Ausdruck 1 False und der bedingte Ausdruck 2 True ist
else:
<Verarbeitungsblock 3>
#Processing wird ausgeführt, wenn der bedingte Ausdruck 1 False, der bedingte Ausdruck 2 False und der bedingte Ausdruck 3 True ist.
# Bedingte Verzweigung durch ternären Operator
# Wert 1, wenn der bedingte Ausdruck True ist, Wert 2, wenn False
Wert 1, wenn bedingter Ausdruck sonst Wert 2
Halten Sie die Daten in der Regel, die eine Reihe von Daten generieren können, nicht den Wert selbst, der die Daten darstellt. Wenn eine große Datenmenge erforderlich ist, ist die Verwendung eines Iterators speichereffizienter. Ein Beschreibungsbeispiel eines Iterators vom Typ "Bereich" ist unten gezeigt.
# Die folgenden drei range () geben einen Iterator zurück, der von 0 auf 9 um 1 erhöht wird.
range(0, 10, 1)
range(0, 10)
a = range(10)
print(a)
print(a[0])
Ausführungsergebnis
range(0, 10) 0
range ()
hat die Funktion eines Inkrementoperators (++
), der in Python nicht verwendet werden kann. Die Dekrementierung (--
) erfolgt mit einem Iterator namensreversed ()
.
break
und continue
AnweisungenDurch Beschreiben der Schleifenanweisung im Verarbeitungsblock ist es möglich, die ausgeführte Schleifenanweisung zu steuern.
break
AnweisungUnterbricht die aktuell laufende Schleife und verlässt die Schleife.
b = 0
while True:
b += 1
if b > 5
Wenn break # b = 6 ist, wird die Schleife verlassen und der Prozess endet.
print(b)
Ausführungsergebnis
1 2 3 4 5
continue
AnweisungUnterbrechen Sie den laufenden Verarbeitungsblock und verschieben Sie die Verarbeitung in die Bewertung des bedingten Ausdrucks der Schleife.
c = 0
while True:
c += 1
if c < 5
Die nachfolgende Verarbeitung wird erst ausgeführt, wenn Sie fortfahren # b = 6.
print(c)
break
Ausführungsergebnis
6
Es fiel mir schwer, den Code in dem von mir verwendeten Scraping-Nachschlagewerk zu verstehen, und ich beschloss, die grundlegende Grammatik von Python erneut zu lernen. Ich war überrascht, dass das Inkrement-Dekrement, das in C
und Java
sehr praktisch war, nicht verwendet werden kann, aber mit der kumulativen Zuweisung (+ =
,- =
) und dem Iterator gut gehandhabt werden kann. ich will
Ich habe den GitHub angehängt, der aus dem Buch veröffentlicht wurde, auf das ich mich bezog. Zusätzliche Überarbeitung Python Scraping & Entwicklungstechnik für maschinelles Lernen
Recommended Posts