Internet Scraping ist für den Uneingeweihten eine gewaltige Festung der Komplexität. Es fühlt sich an, als würde man sich einer großen Symphonie nur mit einem bescheidenen Kazoo nähern.
Aber es gibt einen Rhythmus im Wahnsinn, den Sie bestimmen können. Python, unser treuer Stab, bietet uns eine Vielzahl von Ansätzen zum Internet Scraping. Jedes hat sein einzigartiges Tempo, seine einzigartige Klangfarbe und seine einzigartige Harmonie.
Internet Scraping muss nicht immer ein komplexes Werk sein.
In diesem Ideenensemble werden wir unsere Instrumente auf drei verschiedene Melodien einstimmen: die einfache, die versatile und die umfassende. Jeder hat seinen Platz in unserer großen Leistung. Dadurch werden die Internet-Scraping-Funktionen von Python auch für Anfänger zugänglich.
Die Beispiele und Ergebnisse in diesem Beitrag sind jedoch frei erfunden. Dies liegt daran, dass Internet Scraping eine rechtliche und ethische Komplexität aufweist, die nicht Gegenstand dieses Beitrags ist. Dennoch werden Sie keine Probleme damit haben, diese Techniken in Ihrem Kontext wiederzuverwenden.
Atmen Sie durch, beruhigen Sie Ihre Nerven und machen Sie sich bereit für das Internet-Scraping mit Python.
Ich schätze die Harmonie der Einfachheit und die read_html-Methode von Pandas ist ein Paradebeispiel dafür. Für diejenigen unter Ihnen, die es vielleicht nicht wissen: Pandas ist eine Python-Bibliothek, die Funktionen zur Datenbearbeitung und -analyse bietet. Und die gute Nachricht ist, dass die Methode read_html das Internet-Scraping zum Kinderspiel macht.
Hier ist das Ergebnis: Die Web site, die Sie durchsuchen möchten, muss vorhanden sein <desk></desk>
Tags um die Daten herum. Das ist Ihre Melodie und sie muss pünktlich gespielt werden. Die Daten müssen schnell verfügbar sein und dürfen nicht mit JavaScript verzögert geladen werden. Genau wie bei einer Symphonie ist das Timing entscheidend.
Betrachten wir als Beispiel ein kurzes Skript. Stellen Sie sich vor, wir durchsuchen die Tabellendaten zu Fortune-500-Unternehmen.
Die Daten auf der Web site sehen folgendermaßen aus. Beachten Sie, dass sich die Daten in einem Tabellen-Tag im HTML befinden. Sie können mit der rechten Maustaste auf die Tabelle klicken und auf „Inspizieren“ klicken, um den HTML-Code davon anzuzeigen.
Hier ist der Code, der es kratzt.
import pandas as pdurl = 'https://instance.com/Fortune_500'
tables = pd.read_html(url)
fortune500_table = tables[0] # Choosing the primary desk on the web page
print(fortune500_table)
Mit diesen Codezeilen haben wir gerade einen Pandas DataFrame aus der ersten Tabelle auf der Wikipedia-Seite erstellt. Viel einfacher geht es nicht!
Fahren wir mit unserem zweiten Satz fort: einem Duett aus Requests und BeautifulSoup. Requests ist ein Python-Modul, das zum Erstellen verschiedener Arten von HTTP-Anfragen verwendet wird. BeautifulSoup hingegen ist eine Bibliothek zum Extrahieren von Daten aus HTML- und XML-Dateien.
Wie bei unserem ersten Schritt ist das Timing von entscheidender Bedeutung: Die Daten sollten sofort verfügbar sein und nicht durch JavaScript verzögert werden. Im Gegensatz zur read_html-Methode von Pandas bietet dieses Duo jedoch eine größere Flexibilität.
Lassen Sie uns diese Flexibilität anhand eines kurzen Beispiels veranschaulichen. Wir möchten den Titel einer Webseite abrufen. Hier ist ein einfaches Skript, das diese Aufgabe erfüllt:
import requests
from bs4 import BeautifulSoup# Make a GET request to fetch the uncooked HTML content material
url = "http://0.0.0.0:8080/"
html_content = requests.get(url).textual content
# Parse the html content material
soup = BeautifulSoup(html_content, "html.parser")
# Print the parsed title of html
title = soup.discover("title")
if title:
title_text = title.textual content
print("Title of the webpage:", title_text)
else:
print("No title discovered")
# Print the parsed desk of html
desk = soup.discover("desk")
if desk:
table_text = desk.textual content
print("Desk content material:n", table_text)
else:
print("No desk discovered")
# Discover a <div> with a selected class throughout the parsed HTML
div_with_class = soup.discover("div", class_="example-class")
if div_with_class:
div_text = div_with_class.textual content
print("Content material throughout the <div> with the category 'example-class':", div_text)
else:
print("No div with class 'example-class' discovered")
Dieser Code sendet zunächst eine GET-Anfrage an die angegebene URL, analysiert die Antwort mit BeautifulSoup und extrahiert schließlich den Titel der Webseite, die Beschreibung und die darin enthaltene Tabelle und gibt sie aus.
Wie Sie gesehen haben, sind wir nicht nur auf das Tabellen-Tag der Webseite beschränkt. Wir können quick alle Informationen von der Seite abrufen, solange sie sofort mit der Seite geladen werden.
Schließlich erreichen wir unsere dritte und umfassendste Bewegung: Selenium. Dieses Device bietet verschiedene Lösungen für komplexe Situationen, wie z. B. die Handhabung von Anmeldungen, die Navigation durch Seiten, den Umgang mit Verzögerungen und sogar die Optimierung der Web site mit JavaScript.
Stellen Sie sich Selenium als Dirigent unseres Orchesters vor, der den Taktstock mit Meisterschaft führt. Es kann die Musik durch die kompliziertesten Symphonien leiten, genauso wie es uns durch die kompliziertesten Web sites leiten kann.
Werfen wir einen Blick auf ein Beispiel, in dem Selenium zu einer Web site navigiert und vor dem Scraping komplexe Vorgänge ausführt:
from selenium import webdriver
from selenium.webdriver.widespread.by import By
from selenium.webdriver.widespread.keys import Keys
from selenium.webdriver.help.ui import WebDriverWait
from selenium.webdriver.help import expected_conditions as EC# setup webdriver
driver = webdriver.Firefox()
# navigate to the URL
driver.get("https://www.instance.com")
# carry out login
username_input = driver.find_element(By.ID, "username-input")
password_input = driver.find_element(By.ID, "password-input")
login_button = driver.find_element(By.ID, "login-button")
# Enter login credentials
username_input.send_keys("your_username")
password_input.send_keys("your_password")
# Click on on the login button
login_button.click on()
# Anticipate the login course of to finish
wait = WebDriverWait(driver, 10)
wait.till(EC.url_contains("dashboard"))
# Seek for information
search_input = driver.find_element(By.ID, "search-input")
search_button = driver.find_element(By.ID, "search-button")
# Enter search question
search_input.send_keys("your_search_query")
search_input.send_keys(Keys.ENTER)
# Anticipate search outcomes to load
wait.till(EC.visibility_of_element_located((By.ID, "search-results")))
# Fetch information from search outcomes
search_results = driver.find_elements(By.CLASS_NAME, "search-result")
for lead to search_results:
# Course of every search consequence as wanted
print(consequence.textual content)
# Do not forget to shut the motive force
driver.give up()
Dieser Code zeigt, wie Sie Selenium verwenden, um Anmelde-, Such- und Abrufdaten aus Suchergebnissen zu integrieren. Es beginnt mit der Einrichtung des Firefox-Webtreibers und der Navigation zu einer bestimmten URL.
Anschließend führt es eine Anmeldung durch, indem es den Benutzernamen und das Passwort eingibt, auf die Schaltfläche „Anmelden“ klickt und auf den Abschluss des Anmeldevorgangs wartet.
Als Nächstes führt es eine Suche durch, indem es eine Suchanfrage eingibt, die Eingabetaste drückt und darauf wartet, dass die Suchergebnisse geladen werden.
Schließlich ruft es die Daten aus den Suchergebnissen ab. Es lokalisiert die Elemente und verarbeitet sie, bevor der Webtreiber geschlossen wird.
Jede Methode hat ihre eigene Melodie, ihren Rhythmus und ihre Textur in der großen Symphonie des Python-Internet-Scrapings. Das einfachste, Pandas‘ read_html, spielt die geradlinige, eingängige Melodie der Symphonie. Das versatile Duett von Requests und BeautifulSoup führt komplexe Harmonien und Rhythmen ein und verleiht der Aufführung Tiefe. Schließlich leitet die gesamte Kraft von Selen das gesamte Stück und führt uns durch die kompliziertesten und komplexesten Passagen.
Denken Sie daran: So wie Musik inspirierend sein kann, so können auch Daten inspirieren. Dirigieren Sie additionally Ihre Symphonie, ziehen Sie die Erkenntnisse aus den weiten Meeren des Internets und lassen Sie Ihre Erkenntnisse die süßesten Melodien erklingen. Beginnen Sie mit dem Einfachsten, passen Sie sich dem Flexiblen an und meistern Sie das Umfassende.
Jetzt geh raus und lass deine Symphonie spielen!