Téléchargez les images du drapeau de Wikipédia en une seule fois [Python] [Beautiful Soup]

Aperçu

Liste des drapeaux Wikipedia A été téléchargé (gratté) avec python.

référence

environnement

macOS Catalina python3.8.0

Installation de la bibliothèque

pip install beautifulsoup4
pip install requests
pip install urllib
pip install lxml

la mise en oeuvre

from bs4 import BeautifulSoup
import requests
import urllib
import os
import time

#wikipedia URL "Liste des drapeaux"
wiki_url = "https://ja.wikipedia.org/wiki/%E5%9B%BD%E6%97%97%E3%81%AE%E4%B8%80%E8%A6%A7"

#Obtenir et analyser la source html
html_text = requests.get(wiki_url).text
soup = BeautifulSoup(html_text,"lxml")

#Obtenir la balise img
imgs = soup.find_all("img")
#Obtenir l'URL de l'image du drapeau
flag_urls = []
for tag in imgs:
    #La balise img de l'image du drapeau a l'attribut alt"〇〇 drapeau"Parce qu'il est au format (au 22 mars 2020)"drapeau"Traitez uniquement ceux qui incluent.
    if "drapeau" not in tag.get("alt"):
        continue
    url = tag.get("src") #Obtenir l'attribut src (chemin relatif de l'url)
    url = "https:"+url #https:Pour en faire une URL absolue en préfixant
    flag_urls.append(url)

for url in flag_urls:
    #Spécification du chemin de destination du téléchargement
    #La fin de chaque URL"125px-Flag_of_Nom du pays.svg.png "Ça ressemble à ça. d'ici"Flag_of_Nom du pays.png "Au nom du fichier après le téléchargement
    png_name = url.split("px-")[-1].split(".")[0]+".png "
    #Enregistrez-le sous un répertoire appelé figs. Faire des figues à l'avance
    png_name = os.path.join("./figs",png_name)
    #Télécharger uniquement si le fichier n'existe pas
    if os.path.exists(png_name): 
        print("File",png_name,"already exists")
        continue
    urllib.request.urlretrieve(url,png_name)
    print("File",png_name,"downloaded")
    #Attendez pour ne pas charger le serveur
    time.sleep(1)

Le nom du fichier a été partiellement déformé, mais le téléchargement a réussi.

Recommended Posts

Téléchargez les images du drapeau de Wikipédia en une seule fois [Python] [Beautiful Soup]
[Python] Comment enregistrer des images sur le Web à la fois avec Beautiful Soup
Ma belle soupe (Python)
Essayez de gratter avec Python + Beautiful Soup
[Python] Un mémorandum de belle soupe4
Remplacez tout d'un coup par sed
Convertir un mémo à la fois avec Python 2to3
[Python3] Comprendre les bases de Beautiful Soup
Envoyez des newsletters en une seule fois avec Gmail
Télécharger des images à partir de la liste d'URL en Python
[Python] Gratter une table avec Beautiful Soup