Lorsque la destination du lien est décrite par un chemin relatif en HTML, utilisez ʻurllib.parse.urljon () `pour obtenir le chemin absolu.
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 ")
Résultat d'exécution
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
En Python, les blocs de traitement sont définis par indentation, donc lorsqu'il n'est pas nécessaire d'effectuer le traitement, le bloc de traitement lui-même disparaît. Par conséquent, l'instruction pass
est utilisée pour décrire explicitement que rien ne doit être fait.
with open('exsample.txt', 'w'):
pass
Décrivez en utilisant ʻif, ʻelif
, ʻelse`. De plus, lors du branchement en deux blocs de traitement par une expression conditionnelle, il peut être décrit en utilisant un opérateur ternaire.
si expression conditionnelle 1:
<Bloc de traitement 1>
#Processing exécuté lorsque l'expression conditionnelle 1 est True
expression conditionnelle elif 2:
<Bloc de traitement 2>
#Processing exécuté lorsque l'expression conditionnelle 1 est False et que l'expression conditionnelle 2 est True
else:
<Bloc de traitement 3>
# Traitement exécuté lorsque l'expression conditionnelle 1 est False, l'expression conditionnelle 2 est False et l'expression conditionnelle 3 est True.
# Branchement conditionnel par opérateur ternaire
# Valeur 1 lorsque l'expression conditionnelle est True, valeur 2 lorsque False
Valeur 1 si expression conditionnelle sinon valeur 2
Conservez les données comme une règle qui peut générer une série de données, et non la valeur elle-même qui représente les données. Lorsqu'une grande quantité de données est requise, il est plus efficace en termes de mémoire d'utiliser un itérateur. Un exemple de description d'un itérateur de type «plage» est présenté ci-dessous.
# Les trois range () suivants renvoient un itérateur qui s'incrémente de 1 de 0 à 9.
range(0, 10, 1)
range(0, 10)
a = range(10)
print(a)
print(a[0])
Résultat d'exécution
range(0, 10) 0
range ()
a la fonction d'un opérateur d'incrémentation (++
) qui ne peut pas être utilisé en Python. La décrémentation (--
) se fait en utilisant un itérateur appeléreverse ()
.
break
et continue
En décrivant dans le bloc de traitement de l'instruction de boucle, il est possible de contrôler l'instruction de boucle en cours d'exécution.
break
Brisez la boucle en cours et quittez la boucle.
b = 0
while True:
b += 1
if b > 5
Lorsque break # b = 6, la boucle est quittée et le processus se termine.
print(b)
Résultat d'exécution
1 2 3 4 5
continue
Suspend le bloc de traitement en cours d'exécution et déplace le traitement vers l'évaluation d'expression conditionnelle de la boucle.
c = 0
while True:
c += 1
if c < 5
Le traitement suivant ne sera pas exécuté tant que continuer # b = 6.
print(c)
break
Résultat d'exécution
6
J'ai commencé à avoir du mal à comprendre le code du livre de référence sur le scraping que j'utilisais, alors j'ai décidé de recommencer à apprendre la grammaire de base de Python. J'ai été surpris que le décrément d'incrémentation, qui était très pratique en C
et Java
, ne puisse pas être utilisé, mais il peut être bien géré en utilisant l'affectation cumulative (+ =
,- =
) et l'itérateur. je veux
J'ai joint le GitHub publié à partir du livre auquel j'ai fait référence. Révision supplémentaire de la technique de développement du scraping Python et de l'apprentissage automatique
Recommended Posts