[PYTHON] Enregistrez des images avec le web scraping

Aperçu

Enregistrez les images de votre site Web sur votre PC à l'aide de requêtes Python et de Beautiful Soup. À propos, l'image est affichée lorsque le script est exécuté.

Motivation

Je souhaite enregistrer une image de parfum. J'ai pensé que ce serait pratique s'il pouvait être sauvegardé automatiquement.

développement de

environnement

OS Windows 10
Python 3.7.3
requests 2.22.0
beautifulsoup4 4.8.2

Code complété

main.py


import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
import cv2

root = "https://www.perfume-web.jp/"
url = "https://www.perfume-web.jp/index-jpn.php"
store_path = "PATH"

def img_store(path):p
    img = requests.get(path).content

    print(path)

    with open(store_path, "wb") as f:
        f.write(img)

    img_local = cv2.cvtColor(cv2.imread(store_path), cv2.COLOR_BGR2RGB)

    plt.imshow(img_local)
    plt.show()

response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")

top_img = soup.find("div", id="main").find("img").get("src")

img_store(root+top_img)

La description

response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")

top_img = soup.find("div", id="main").find("img").get("src")

Extrait le HTML de l'URL spécifiée. (Lignes 1 et 2) Ensuite, lisez le HTML du site. Vous pouvez lire la méthode dans la fenêtre qui apparaît lorsque vous cliquez avec le bouton gauche sur Chrome et sélectionnez «Vérifier». Cette fois, je veux prendre l'image du haut de la page WEB, j'ai donc spécifié le principal de la balise div. Find () ne récupère que le premier qui apparaît même s'il a la même balise ou identifiant, donc une seule valeur est renvoyée. J'ai le src de la balise img dedans. Vous ne pouvez trouver les balises et les identifiants en HTML qu'en lisant le site et en HTML et en concevant vos propres idées. De nombreuses fonctions sont fournies dans bs4 pour acquérir des éléments plus complexes.

 top_img = soup.find("div", id="main").find("img").get("src")

def img_store(path):p
    img = requests.get(path).content

    print(path)

    with open(store_path, "wb") as f:
        f.write(img)

    img_local = cv2.cvtColor(cv2.imread(store_path), cv2.COLOR_BGR2RGB)

    plt.imshow(img_local)
    plt.show()

Le chemin de l'image étant un chemin relatif, j'ai préparé le domaine du site en tant que root et créé l'URL correcte de l'image en me connectant au chemin relatif de l'image acquise. Le reste est enregistré et affiché. C'est un passe-temps affiché par matplotlib. Cela fait du bien d'avoir une échelle en fonction du nombre de pixels.

résultat

スクリーンショット (7).png Il sera affiché comme ceci. (J'ai caché les visages précieux des trois personnes. Si vous voulez le voir, veuillez visiter le Site officiel du parfum) Vous pouvez enregistrer d'autres images en modifiant la façon dont vous recherchez des images.

Considération

J'ai essayé le web scraping comme tremplin vers l'idée qu'il serait bien que le site soit mis à jour automatiquement. Il semble qu'il existe différentes règles et lois pour le scraping Web, veuillez donc vous référer au site suivant. C'est une sorte d'attaque qui met une charge sur le serveur de l'autre partie. .. .. https://qiita.com/nezuq/items/c5e827e1827e7cb29011 Pour le débogage et la pratique, c'est une bonne idée d'enregistrer et d'utiliser tout le code HTML de votre site une fois. C'est effrayant d'avoir une boucle infinie inattendue.

référence

http://kondou.com/BS4/ https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406 https://qiita.com/YosukeHoshi/items/189c615187f41f2f4e27

Recommended Posts

Enregistrez des images avec le web scraping
Télécharger automatiquement des images avec grattage
Web scraping avec python + JupyterLab
Grattage Web facile avec Scrapy
Web scraping débutant avec python
raclage Web
Grattage WEB avec BeautifulSoup4 (page en couches)
Gratter le classement Web d'Alexa avec pyQuery
Web scraping avec Python Première étape
J'ai essayé webScraping avec python.
GAN: DCGAN Part1 - Scraping d'images Web
Enregistrer des images sur le Web sur un lecteur avec Python (Colab)
Grattage au sélénium
Grattage au sélénium ~ 2 ~
Grattage avec Python
Grattage WEB avec Python (pour mémo personnel)
Grattage avec Python
Premiers pas avec Python Web Scraping Practice
grattage Web (prototype)
Grattage avec du sélénium
[Note personnelle] Scraping de pages Web en python3
Site de courses de chevaux Web scraping avec Python
Grattage de 100 images Fortnite
Premiers pas avec Python Web Scraping Practice
Pratiquer le web scraping avec Python et Selenium
Scraping Web facile avec Python et Ruby
Grattage WEB avec BeautifulSoup4 (page du numéro de série)
[Pour les débutants] Essayez le web scraping avec Python
Exécutez régulièrement le scraping WEB avec AWS-Lambda + Python + Cron
Web scraping avec Python (prévisions météo)
Web scraping avec Python (cours de l'action)
Grattage en Python (préparation)
Économisez de la mémoire avec `` __slots__``
Grattage avec Python + PhantomJS
Premiers pas avec le Web Scraping
Grattage avec coquille tremblante
[Python] Comment enregistrer des images sur le Web à la fois avec Beautiful Soup
Scraping: enregistrer le site Web localement
Grattage avec du sélénium [Python]
Scraping avec Python + PyQuery
Gratter avec une belle soupe
Scraping RSS avec Python
Centrer l'image avec python-pptx
Analyse de données pour améliorer POG 1 ~ Web scraping avec Python ~
Scrapage Web rapide avec Python (tout en prenant en charge le chargement JavaScript)
Les débutants en Python sont bloqués dans leur premier scraping Web
J'ai essayé de gratter avec Python
Enregistrer des images à l'aide de requêtes python3
Grattage au sélénium en Python
Grattage avec Selenium + Python Partie 1
Grattage avec chromedriver en python
Grattage festif avec Python, scrapy
Grattage immédiat des images google!
Développement d'applications Web avec Flask
Grattage avec du sélénium en Python
Technologie de grattage WEB et préoccupations
Créer une application Web avec Django