[PYTHON] Bildersammlung mit Web Scraping

Dieses Mal möchte ich den Code schreiben und erklären, der Bilder von der angegebenen URL mithilfe von Web Scraping sammelt.

Implementierungscode

import requests
from requests.compat import urljoin
from bs4 import BeautifulSoup
import time
from PIL import Image
import urllib.request
import sys.os

class web_scryping:
    def __init__(self , url):
        self.url = url
        self.soup = BeautifulSoup(requests.get(self.url).content, 'lxml')
        
class download_images(web_scryping):
    def download(self , max_down_num):
        self.down_num = 0
        self.max_down_num = max_down_num
        self.save_path = './img/' + str(self.down_num+1) + '.jpg'
        now_num = 0
        for link in self.soup.find_all("img"):
            src_attr = link.get("src")
            target = urljoin(self.url, src_attr)
            resp = requests.get(target)
            image = resp.content
            #breakpoint()
            print(str(resp) + '  ' + str(now_num))
            now_num = now_num + 1
            if str(resp) != '<Response [404]>':
                with open(self.save_path, 'wb') as f:
                    f.write(image)
                self.down_num = self.down_num + 1
            time.sleep(1)
            self.save_path = './img/' + str(self.down_num+1) + '.jpg'
            if self.down_num == self.max_down_num:
                break
                
    def img_resize(self , img_path):
        try:            
            im = Image.open(img_path)
            print("Originalbildgröße Breite: {}, height: {}".format(im.size[0], im.size[1]))
            im_resize = im.resize(size=(800,1200))         
            im_resize.save(save_path)
            print('image resize sucess')
        except:
            print('image resize failed')


def main():
    url = sys.argv[0]
    di = download_images(url)
    di.download(50)

if __name__ == '__main__':
    main()

Über den Ablauf des Programms

Schritt 1

def main():
    url = sys.argv[0]
    di = download_images(url)
    di.download(50)

Geben Sie die URL als erstes Argument im Befehlszeilenargument an. Übergeben Sie die URL an die Klasse download_images, die von der Klasse web_scryping erbt.

Schritt 2

class web_scryping:
    def __init__(self , url):
        self.url = url
        self.soup = BeautifulSoup(requests.get(self.url).content, 'lxml')

Die Klasse download_images erbt von der Klasse web_scryping. Da die Klasse download_images keine Init-Methode hat, wird die Init-Methode der Klasse web_scryping gestartet. Hier wird die URL von der request.get-Methode abgerufen und der Inhalt von HTML wird von BeautifulSoup analysiert. Fügen Sie das Analyseergebnis in eine Klassenvariable namens self.soup ein.

Schritt 3

class download_images(web_scryping):
    def download(self , max_down_num):
        self.down_num = 0
        self.max_down_num = max_down_num
        self.save_path = './img/' + str(self.down_num+1) + '.jpg'
        now_num = 0
        for link in self.soup.find_all("img"):
            src_attr = link.get("src")
            target = urljoin(self.url, src_attr)
            resp = requests.get(target)
            image = resp.content
            #breakpoint()
            print(str(resp) + '  ' + str(now_num))
            now_num = now_num + 1
            if str(resp) != '<Response [404]>':
                with open(self.save_path, 'wb') as f:
                    f.write(image)
                self.down_num = self.down_num + 1
            time.sleep(1)
            self.save_path = './img/' + str(self.down_num+1) + '.jpg'
            if self.down_num == self.max_down_num:
                break

Verwenden Sie die Download-Methode der Klasse download_images in Schritt 1, um den Download zu starten. Geben Sie für self.save_path den Namen der Bilddatei immer mehr wie eine .jpg-Nummer im img-Verzeichnis an. self.soup.find_all ("img"): Suchen Sie das img-Tag in HTML. src_attr = link.get ("src"): Ruft das src-Element vom img-Tag ab. image = resp.content: Die Bildvariable enthält das Bildobjekt. if str (resp)! = '<Response [404]>': Die resp-Variable enthält das Ergebnis der Antwort. Wenn dies nicht 404 ist, speichern Sie das Bild. time.sleep (1): Beim Schaben ist es nicht wünschenswert, die Website zu belasten. Verwenden Sie daher die Schlafmethode, um Zeit zu sparen.

Bonus

def img_resize(self , img_path):
        try:            
            im = Image.open(img_path)
            print("Originalbildgröße Breite: {}, height: {}".format(im.size[0], im.size[1]))
            im_resize = im.resize(size=(800,1200))         
            im_resize.save(save_path)
            print('image resize sucess')
        except:
            print('image resize failed')

Diese Methode ist eine Methode zum Anpassen der Bildgröße, aber ich verwende sie nicht, da die Auflösung beim Erhöhen nicht so gut war.

Recommended Posts

Bildersammlung mit Web Scraping
Einzeiliges Web-Scraping mit tse
Web Scraping
Web Scraping (Prototyp)
Bildersammelmethode
Ich habe versucht, durch Schaben ein Bild zu bekommen
Holen Sie sich Informationen zu Bootsrennen mit Web Scraping
Scraping von Hinatazakas Blog-Bild
Erste Schritte mit Web Scraping
Web Scraping mit Python + JupyterLab
EXE Web API von Python
Speichern Sie Bilder mit Web Scraping
WEB-Scraping-Technologie und Bedenken
Rufen Sie die Bing Image Search API v5 von Python auf, um Bilder zu sammeln
Kompromisse beim Web Scraping & Crawlen
Webcrawlen, Web-Scraping, Zeichenerfassung und Speichern von Bildern mit Python
Web Scraping mit Selenium (Python)
Bildverarbeitung mit Python (Pillow)
Bildverarbeitungssammlung in Python
Web Scraping mit AWS Lambda
Web Scraping Anfänger mit Python
Web-Scraping-Bibliothek mit Algorithmen Scrapely
Sammeln Sie nur Gesichtsbilder einer bestimmten Person mit Web Scraping
Holen Sie sich Splunk Download-Link durch Scraping
Web Scraping mit Python Erster Schritt
Ich habe versucht, WebScraping mit Python.
GAN: DCGAN Part1 - Webbilder abkratzen
Eine Sammlung von einzeiligen Webservern
Umweltfreundliches Scraping mit Bildverarbeitung
Lassen Sie uns mit Python Image Scraping durchführen
Web Scraping für Anfänger in Python (1)
Web Scraping für Wetterwarnbenachrichtigungen.
Web Scraping für Anfänger in Python (4) -1
Nogizaka46 Holen Sie sich Blog-Bilder durch Schaben
10 Fragen, die vor dem Web-Scraping überprüft werden müssen
"Klassifizierung von Müll nach Bild!" App-Erstellungstagebuch Tag3 ~ Webanwendung mit Django ~