Python-Crawler-Übung, Crawl-iview, Symbolname der Elementkomponentenbibliothek

einfacher Crawler

Lassen Sie uns zunächst ein Beispiel für das Crawlen von Bildern von einer Bilder-Website und deren Speicherung in einem lokalen Ordner geben. 

Ursprünglicher Blog:http://t.csdnimg.cn/Cjv3o

Dies ist eine Bilder-Website

https://pic.netbian.com/

Klicken Sie mit der rechten Maustaste auf die leere Stelle und sehen Sie sich den Quellcode der Seite an. Wir haben festgestellt, dass es bestimmte Inhalte gibt

Wir verwenden den folgenden Code, um alle Bilder auf dieser Seite zu crawlen und sie im Ordner dieses Python-Projekts zu speichern

Anfragen importieren
Re importieren
Betriebssysteme importieren

url = "https://pic.netbian.com/"
headers = {     "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"

response = request.get(url=url,headers=headers)
response.encoding = Response.apparent_encoding

"""
. Zeigt jedes Zeichen außer Leerzeichen (außer \n) an.
* Gibt an, dass übereinstimmende Zeichen null oder mehrmals Mal< vorliegen /span> """ image = re.findall(parr,response.text) parr = re.compile('src="(/u.*?)".alt="(.*?)"') # Match images Link und Bildname .*? Nicht gierige Übereinstimmung
? Gibt an, dass das Zeichen Null oder einmal entspricht



path = "Bilder von Biantu.com abrufen"
if not os.path.isdir(path): # Bestimmen Sie, ob der Ordner existiert. Wenn er nicht existiert, erstellen Sie ihn it< /span> für i im Bild: # Durchlaufen der Liste
    os.mkdir(path) # Erstellen     name = i[1] # Name abrufen     """ < a i=8> Erstellen Sie eine leere JPG-Datei im Ordner und öffnen Sie sie im binären Lese- und Schreibmodus „wb“     @param res: das Ergebnis der Bildanforderung     """     mit open(path+"/{}.jpg".format(name),"wb") als img :     print(name+".jpg Erfolgreich... " )         img.close() # Vorgang schließen         img.write(res.content) # The Ergebnis der Bildanforderung Der Inhalt wird in die JPG-Datei geschrieben         res = request.get("https://pic.netbian.com"+link)
    













 

Zurück zum Thema: Wir müssen die Symbolnamen in den Symbolbibliotheken von iview- und Element-Websites crawlen.

Zunächst wissen wir, dass die URL der Symbolkomponente von iview lautet:http://v4.iviewui.com/components/icon

Wir haben mit der rechten Maustaste auf die leere Stelle geklickt, um den Quellcode der Seite anzuzeigen, und festgestellt, dass sie leer war.

Dies liegt am Rendering-Mechanismus von Vue

Dynamisch generierter Inhalt: Der Inhalt einer Webseite wird dynamisch durch JavaScript generiert. Wenn Sie mit der rechten Maustaste klicken, um den Quellcode anzuzeigen, wird nur die ursprünglich geladene HTML-Struktur angezeigt, nicht jedoch der nachfolgende, durch JavaScript generierte Inhalt. Dies kann der Grund dafür sein, dass der Quellcode leer ist. Sie können versuchen, die Entwicklertools Ihres Browsers (normalerweise durch Drücken der F12-Taste geöffnet) zu verwenden, um den dynamisch generierten Inhalt anzuzeigen.

Verwenden Sie die Entwicklertools des Browsers: Öffnen Sie die Entwicklertools des Browsers (normalerweise durch Drücken der F12-Taste geöffnet), wechseln Sie zur Registerkarte „Elemente“ oder „Elemente“, wo die DOM-Struktur und der dynamisch generierte Inhalt der Seite angezeigt werden.

Wie lassen wir den Crawler also Vorgänge ausführen und die Dom-Struktur sehen?

Sie können Selen verwenden

Installieren Sie zuerst pip install selenium

vom Selenium Import Webdriver
von selenium.webdriver.common.by import By

# Initialisieren Sie Selenium WebDriver und wählen Sie einen geeigneten Browsertreiber aus, z. B. ChromeDriver
Treiber = webdriver.Chrome()
Driver.maximize_window() #Stellen Sie das Fenster auf Maximierung ein
Driver.implicitly_wait(1) #Legen Sie fest, dass 3 Sekunden gewartet werden soll, bevor die Zielwebseite geöffnet wird
url="http://v4.iviewui.com/components/icon"
#Verwenden Sie die get-Methode, um auf die Website zuzugreifen
Driver.get(URL)
# Alle .icons-item-Elemente finden
icon_items = drivers.find_elements(By.CSS_SELECTOR, '.icons-item')
# Durchlaufen und drucken Sie den Textinhalt jedes Elements
für Artikel in icon_items:
    print(item.text)
#Browser beenden
Driver.quit()

Die Ausführung dauert eine Weile

Konsolendruck

icon_items = drivers.find_elements(By.CSS_SELECTOR, '.icons-item')

Warum suchen wir nach Icons-Elementen?​ 

Im f12-Element sehen wir, dass die Symbole alle hier sind

Das Symbol, das wir auf der Komponentenseite von iview kopieren, ist dieses <Icon type="ios-add" />

Aber normalerweise brauchen wir icon="md-redo"

Verarbeiten Sie es einfach beim Drucken

Als nächstes crawlen wir das Element

Icon-Webadresse: https://element.eleme.io/#/zh-CN/component/icon

Schauen wir uns f 12 Elemente an

Es reichen also alle Symbolnamen aus

vom Selenium Import Webdriver
von selenium.webdriver.common.by import By

# Initialisieren Sie Selenium WebDriver und wählen Sie einen geeigneten Browsertreiber aus, z. B. ChromeDriver
Treiber = webdriver.Chrome()
Driver.maximize_window() #Stellen Sie das Fenster auf Maximierung ein
Driver.implicitly_wait(1) #Legen Sie fest, dass 3 Sekunden gewartet werden soll, bevor die Zielwebseite geöffnet wird
url="https://element.eleme.io/#/zh-CN/component/icon"
#Verwenden Sie die get-Methode, um auf die Website zuzugreifen
Driver.get(URL)
# Alle .icon-name-Elemente finden
icon_items = drivers.find_elements(By.CSS_SELECTOR, '.icon-name')
# Durchlaufen und drucken Sie den Textinhalt jedes Elements
für Artikel in icon_items:
    print('icon="'+item.text+'"')
#Browser beenden
Driver.quit()

In Selenium sind find_element und find_elements Methoden des WebDriver-Objekts, die zum Suchen von Elementen in Webseiten verwendet werden. Ihre Unterschiede sind wie folgt:

  • find_element: Diese Methode wird verwendet, um ein einzelnes passendes Element zu finden. Wenn mehrere passende Elemente gefunden werden, wird nur das erste passende Element zurückgegeben.
  • find_elements: Diese Methode wird verwendet, um alle passenden Elemente zu finden und eine Liste von Elementen zurückzugeben.

Wie Sie einen Selektor verwenden, hängt von der Art des Selektors ab. Hier sind einige gängige Selektoren und deren Verwendung:

  1. By.ID: Auswahl über das ID-Attribut des Elements.
    Zum Beispiel: driver.find_element(By.ID, "my-element")

  2. By.CLASS_NAME: Wählen Sie über das Klassenattribut des Elements aus.
    Zum Beispiel: driver.find_element(By.CLASS_NAME, "my-class")

  3. By.NAME: Auswahl über das Namensattribut des Elements.
    Zum Beispiel: driver.find_element(By.NAME, "my-name")

  4. By.CSS_SELECTOR: Auswahl über CSS-Selektor.
    Zum Beispiel: driver.find_element(By.CSS_SELECTOR, ".my-selector")

  5. By.XPATH: Auswahl über XPath-Ausdruck.
    Zum Beispiel: driver.find_element(By.XPATH, "//div[@class='my-class']")

Diese Selektormethoden können mit find_element und find_elements verwendet werden.

In Bezug auf das aufgerufene Ereignis können Sie das driver -Objekt verwenden, um verschiedene Methoden aufzurufen, um mit dem Element zu interagieren und mit ihm zu arbeiten. Hier sind einige häufig aufrufbare Ereignisse:

  • click(): Simuliert das Klicken auf ein Element.
  • send_keys(): Tastatureingabe an das Element senden.
  • text: Den Textinhalt des Elements abrufen.
  • get_attribute(): Einen Attributwert eines Elements abrufen.
  • clear(): Inhalt des Eingabeelements löschen.
  • submit():Formularelement senden.

Dies sind nur einige gängige Beispiele für Ereignisse und Methoden. Selenium bietet außerdem viele weitere Methoden und Ereignisse, die je nach Bedarf aufgerufen und verwendet werden können. Ausführlichere Informationen finden Sie in der Selenium-Dokumentation oder der offiziellen Dokumentation.

Guess you like

Origin blog.csdn.net/qq_57420582/article/details/133789216