Heim > Artikel > Backend-Entwicklung > Python-Crawler [1] Laden Sie Mädchenbilder stapelweise herunter
Die Mädchenbilder-Funktion auf Jiedan.com bietet sehr hochwertige SchönheitenBilder , heute werde ich das Wissen und die Tools teilen, die Sie über die Verwendung von Python zum stapelweisen Herunterladen dieser Mädchenbilder benötigen:
#1 Erforderlich Für diesen Artikel müssen Sie nur wissen, wie man list, for… in… bedient und wie man Funktion definiert. Lernen Sie die Funktionen zum Crawlen, Analysieren und Speichern von Webseiten kennen, während Sie es verwenden. Die neueste Version von Python wird mit der Tastenkombination Windows + X geliefert Öffnen Sie die Eingabeaufforderung (Administrator) und geben Sie
pip install beautifulsoup4
Eingabetaste drücken und ausführen ein
Erfolgreich installiert oder so etwas wird angezeigt. Die Eingabeaufforderung zeigt an, dass die Installation abgeschlossen ist#3
Allerdings ein Browser zum Anzeigen Quellcode und Anzeigeelemente sind weiterhin erforderlich, z. B. chr
ome und Firefox
Möchten Sie zwei herunterladen? Für alle Bilder auf mehr als tausend Webseiten müssen Sie zuerst lernen, eine Webseite herunterzuladen :) ÜbungDie Download-URL lautet: jandan.net/ooxx/page-2397#comments. Klicken Sie nach dem Öffnen mit der rechten Maustaste auf die Webseite und sehen Sie sich den Quellcode an der Browser nach dem Parsen des mit HTML, js
, CSS usw. geschriebenen Quellcodes. Die Adresse ist in diesen Quellcodes enthalten, daher besteht der erste Schritt darin, diese HTML-Codes herunterzuladen 🎜> Teil des Codes abgefangen
import urllib.request
res = urllib.request.urlopen(url)
urllib.request.urlopen() Was macht diese Funktion? Wie der Name schon sagt, kann es zum Öffnen einer URL verwendet werden. Es kann entweder einen str (den wir übergeben haben) oder ein Request
Tatsächlich müssen wir uns darüber keine großen Sorgen machen. Wir müssen uns nur daran erinnern, dass diese Funktion eine URL akzeptieren und uns dann ein Objekt zurückgeben kann, das alle Informationen dieser URL enthält. Wir bearbeiten dieses Objekt.
-Variable
Lesen Sie nun den HTML-Code im res-Objekt aus und weisen Sie ihn derhtml zu. Verwenden Sie die Methode res.read().
html = res.read()
Zu diesem Zeitpunkt ist der HTML-Quellcode in HTML gespeichert! Versuchen Sie Drucken(html)
Zu diesem Zeitpunkt stellen Sie fest, dass sich das Ergebnis von dem Inhalt unterscheidet, der angezeigt wird, wenn Sie mit der rechten Maustaste klicken. Sehen Sie sich den Quellcode der Webseite an. Es stellt sich heraus, dass der Rückgabewert der read()-Methode n Bytes beträgt ... Was zum Teufel ist das? Nun, tatsächlich können wir diesen Rückgabewert analysieren und die Bildadresse erhalten. Wenn Sie jedoch denselben HTML-Code erhalten möchten, den Sie im Browser sehen, können Sie die vorherige Codezeile inhtml = res.read().decode('utf-8) ändern ')
Dann drucken (html)
Ein Teil des Codes wurde abgefangen.
OK! Das Gleiche liegt daran, dass die Dekodierung ('utf-8') von read() den Rückgabewert von read() in utf-8 kodieren kann. Aber wir verwenden immer noch html = res.read(), weil es auch die Informationen enthält, die wir brauchen.
Bisher haben wir nur 4 Zeilen Python-Code verwendet, um den HTML-Code der Webseite http://jandan.net/ooxx/page-2397#comments herunterzuladen und in der Variablen HTML zu speichern. Wie folgt:
urllib.request importieren
#Webseite herunterladen
url = 'http://jandan.net/ooxx/page- 2397# comments'
res = urllib.request.urlopen(url)
html = res.read()
Als nächstes verwenden Sie beautifulsoup4, um HTML zu analysieren.
Wie kann ich feststellen, wo sich der HTML-Code befindet, der einem bestimmten Bild entspricht? Klicken Sie mit der rechten Maustaste auf die Seite – Inspizieren. Zu diesem Zeitpunkt ist die linke Hälfte des Bildschirms die ursprüngliche Webseite und die rechte Hälfte des Bildschirms ist der HTML-Code und eine Reihe von Funktionsschaltflächen .
Elemente Auf der linken Seite befindet sich ein Auswahlpfeil. Klicken Sie darauf und schon ist er aktiviert wird blau. Klicken Sie dann auf das Bild auf der Webseite links. Sie können sehen, dass ein Teil des Codes im HTML-Code rechts automatisch hervorgehoben wird. Dieser Teil des Codes ist der HTML-Code, der diesem Bild entspricht! Dieser Pfeil wird verwendet, um den Code zu finden, der einem Element auf der Webseite entspricht.
Schauen Sie sich diesen Code sorgfältig an:
Das können Sie siehe Der Teil src="//wx2.sinaimg.cn/mw600/66b3de17gy1fdrf0wcuscj20p60zktad.jpg" ist die Adresse dieses Bildes und src ist die Quelle. Der Stil nach src ist sein Stil, machen Sie sich darüber keine Sorgen. Sie können es jetzt ausprobieren, fügen Sie http: vor src hinzu, besuchen Sie http://wx2.sinaimg.cn/mw600/66b3de17gy1fdrf0wcuscj20p60zktad.jpg und Sie sollten das Originalbild sehen können.
Der Inhalt, der src entspricht, ist also die Bildlinkadresse, die wir benötigen. Beachten Sie, dass im Bild Quelle und Bildadressenlink, Stil und maximale Breite dem Schlüssel-Wert ähneln. Dies hängt mit der Methode zusammen, die später zum Extrahieren der Adresse des Bildes verwendet wird.
Sehen Sie sich die Codes an, die anderen Bildern entsprechen. Sie können sehen, dass ihre Formate gleich sind, das heißt, sie sind alle in enthalten.
Verwenden Sie BeautifulSoup(), um HTML zu analysieren. Zusätzlich zur Übergabe von HTML übergeben wir auch einen Parameter „html.parser“, der angibt, dass die Funktion BeautifulSoup() die Variable HTML gemäß der Parsing-Methode von HTML analysieren soll. Parser bedeutet syntaktische Analyse.
soup = BeautifulSoup(html,'html.parser')
Diese Codezeile analysiert HTML in ein Suppenobjekt. Wir können dieses Objekt sehr bequem bearbeiten. Extrahieren Sie beispielsweise nur Textinhalte, die „img“ enthalten:
result = supple.find_all('img')
Verwenden Sie die Methode find_all().
print(result) Sie können sehen, dass das Ergebnis eine Liste ist und jedes Element ein Schlüssel-Wert-Paar src-image-Adresse ist, aber es enthält Ich brauche es nicht.
einen Teil des Codes abgefangen.
Verwenden Sie die get-Methode, um die Adresse in doppelte Anführungszeichen zu extrahieren und http: am Anfang hinzuzufügen.
links=[]
für Inhalte im Ergebnis:
links.append('http:'+content .get('src'))
content.get('src') soll den Wert abrufen, der dem Schlüssel src im Inhalt entspricht, also die Adresse in doppelten Anführungszeichen.
links.append() ist eine gängige Methode zum Hinzufügen von Elementen zu einer Liste.
print(links) Sie können sehen, dass jedes Element in dieser Liste die ursprüngliche Bildadresse in doppelten Anführungszeichen ist. Wie unten gezeigt:
Teil des Codes abgefangen
Öffnen Sie mit einem Browser eine beliebige Adresse und Sie können das entsprechende Bild sehen! YO! Das bedeutet, dass wir uns im letzten Schritt befinden und sie herunterladen!
Der Teil zur Adressextraktion ist abgeschlossen. Der Code ist auch recht prägnant und lautet wie folgt:
Webseite #parsen
aus bs4 importieren BeautifulSoup
soup = BeautifulSoup(html,'html.parser')
Ergebnis = Suppe . find_all('img')
links=[]
für Inhalt im Ergebnis:
links.append('http:'+content.get('src' ) )
Der letzte Schritt besteht darin, die Adressen in den Links nacheinander aufzurufen und die Bilder herunterzuladen!
Zu Beginn
Betriebssystem importieren
Erstellen Sie zunächst einen Fotoordner, um die heruntergeladenen Bilder zu speichern Programm.py-Datei befindet.
wenn nicht os.path.exists('photo'):
os.makedirs('photo')
Wir wissen, dass Links eine Liste sind, daher ist es am besten, loop zu verwenden, um sie einzeln herunterzuladen, zu benennen und zu speichern.
i=0
für Link in Links:
i+=1
Dateiname ='photo\'+'photo'+str(i)+'.png'
mit open(filename,'w' ) als Datei:
urllib.request.urlretrieve(link,filename)
i ist eine Schleifenvariable, i+=1 ist eine Anweisung zur Steuerung der Schleife.
Dateiname benennt das Bild, aber es erstellt tatsächlich zuerst eine Datei mit diesem Namen und schreibt dann das Bild hinein. Aus der Zuweisungsanweisung des Dateinamens geht hervor, dass „Foto“ darauf hinweist, dass es sich im Fotoordner befindet, und dass „Foto“ + str (i) dahinter für die Bestellung steht. Nach Abschluss des vollständigen Downloads wird dies angezeigt sehen aus wie Foto1, Foto2 und Foto3. ~ '.png' ist das Suffix. Die Verwendung des +-Zeichens zum Verbinden von Strings ist in Python ebenfalls eine gängige Praxis.
Mit diesen beiden Anweisungszeilen wird das Bild, auf das die Adresse im Link verweist, lokal abgerufen und dann im Dateinamen gespeichert.
open(filename,'w'), öffne den Dateinamenordner, 'w' bedeutet, dass die Öffnungsmethode Schreiben ist. Das heißt, open() akzeptiert hier zwei Parameter, einer ist der Dateiname (Dateipfad) und der andere ist die Öffnungsmethode.
Die Funktion von urllib.request.urlretrieve(link,filename) besteht darin, auf den Link-Link zuzugreifen, dann eine Kopie abzurufen und in den Dateinamen einzufügen.
Nachdem Sie die drei Teile geschrieben haben, klicken Sie auf Ausführen! Sie finden den Fotoordner im Pfad, in dem sich die .py-Datei befindet, die voller Bilder ist, die wir heruntergeladen haben~
Der vollständige Code lautet wie folgt:
import urllib.request
from bs4 import BeautifulSoup
Betriebssystem importieren
#Webseite herunterladen
url = 'http://jandan.net/ooxx/page-2397#comments'
res = urllib.request.urlopen (url)
html = res.read()
#Parse webpage
soup = BeautifulSoup(html,'html.parser')
result = supple.find_all('img ')
links=[]
für Inhalt im Ergebnis:
links.append('http:'+content.get(' src'))
#Bilder herunterladen und speichern
wenn nicht os.path.exists('photo'):
os.makedirs('photo')
i=0
für Link in Links:
i+=1
filename ='photo\'+'photo'+str(i)+' .png'
mit open(filename,'w') as file:
urllib.request.urlretrieve(link,filename)
Dieses kleine Programm kann Es handelt sich um prozessorientiertes Schreiben. Von oben nach unten sind keine Funktionen definiert. Für Neulinge ist dies möglicherweise leichter zu verstehen.
Link zum Mädchenbild
http://jandan.net/ooxx/page-2397#comments Nur die mittlere Zahl ändert sich zwischen 1-2XXX.
url = 'http://jandan.net/ooxx/page-'+str(i)+'#comments'
Ändern Sie einfach den Wert von i Stapelweise heruntergeladen. In einigen Kommentaren heißt es jedoch, dass häufige Besuche dieser Website dazu führen können, dass Ihre IP gesperrt wird. Versuchen Sie es also bitte selbst!
Das obige ist der detaillierte Inhalt vonPython-Crawler [1] Laden Sie Mädchenbilder stapelweise herunter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!