Sie lernen Grundkenntnisse wie Begriffe, die Sie beim Scraping kennen müssen, und die Struktur von Webseiten.
Beim Scraping werden die erforderlichen Informationen automatisch von einer Webseite extrahiert.
Die "Informationen", auf die hier Bezug genommen wird, sind verschieden, wie z. B. Text, Bilder und Links. Sie können sich das manuelle Öffnen des Browsers und das Sammeln von Informationen ersparen und eine große Datenmenge sammeln.
Schaben wird in einer Vielzahl von Situationen eingesetzt, vom persönlichen Gebrauch bis zur Arbeit und Forschung.
Im Bereich des maschinellen Lernens ist eine große Datenmenge im Web besonders nützlich für die Verarbeitung natürlicher Sprache und die Bilderkennung.
In den letzten Jahren haben offene Daten (Daten, die von der Regierung, lokalen Regierungen, Unternehmen usw. mit Genehmigung zur freien Nutzung veröffentlicht wurden) Aufmerksamkeit erregt.
Scraping ist auch nützlich, wenn solche Daten gesammelt werden.
Wenn das Scraping jedoch missbraucht wird, wird der Server, auf dem die Webseite angezeigt wird, belastet. Seien Sie vorsichtig, wenn Sie es verwenden.
Im Gegensatz zur API stellt der Dienstanbieter sie Entwicklern nicht zur Verfügung. Wenn Sie dies ohne die Erlaubnis der anderen Partei tun, können Sie gegen die Bestimmungen der Website verstoßen.
In einigen Fällen ist die Weitergabe erfasster Daten untersagt. Einige Websites verbieten daher das Scraping Bitte lesen Sie die Nutzungsbedingungen der Website sorgfältig durch, bevor Sie mit dem Scraping beginnen.
Überprüfen Sie den allgemeinen Kratzfluss. Es wird auch als gemeinsames Schaben bezeichnet.
Die Begriffe Kriechen und Schaben werden auch für jeden Schritt verwendet.
Gibt es eine API, die die gewünschten Informationen erhalten kann, oder ist es in Ordnung, die erfassten Daten zu veröffentlichen? Überprüfen Sie, ob eine Verletzung wie das Urheberrecht vorliegt.
Um nur beliebige Informationen von einer Webseite abzurufen, müssen Sie zuerst die Webseite abrufen.
Diese Arbeit wird auch als Crawlen bezeichnet.
Für häufig verwendete Bibliotheken
urllib, Anfragen usw.
Sobald Sie eine Webseite haben, erhalten Sie die Informationen, die Sie benötigen.
Es gibt verschiedene Bibliotheken wie re, lxml und Beautiful Soup.
Um genau zu sein, wird dieser Prozess als Schaben bezeichnet.
Die durch Scraping erfassten Daten werden in der Datenbank oder lokal (auf Ihrem eigenen PC) gespeichert.
Hier sind drei einfache Möglichkeiten zum Schaben.
Als eine der einfachsten Kratzmethoden Laden Sie die Webseite mit dem Befehl wget herunter Es gibt eine Methode zur Textverarbeitung mit dem Unix-Befehl oder regulären Ausdrücken.
Diese Methode kann einfach über die Befehlszeile ausgeführt werden Es ist sehr einfach, da es nur mit den Grundkenntnissen des Unix-Befehls verarbeitet werden kann.
Andererseits mangelt es, weil es einfach ist, auch an praktischen Funktionen. Es hat auch den Nachteil, dass es für komplexe Daten schwierig zu verarbeiten ist. Dies ist beispielsweise beim Abrufen eines formatierten Datasets hilfreich.
$ wget http://scraping.aidemy.net
Mitgelieferte Software, Google Chrome-Erweiterungen, Google-Tabellen usw. Es gibt verschiedene Werkzeuge.
Es hat den Vorteil, dass es einfach zu bedienen ist und fast keinen Code zum Schreiben enthält. Es gibt auch Nachteile wie eingeschränkte Funktionen, unterschiedliche Verwendung und kann aufgeladen werden.
Sie können Scraping in verschiedenen Programmiersprachen durchführen.
Dies ist zwar praktisch, da es komplexe und dynamische Daten verarbeiten kann Sie müssen die Grammatik und die Verarbeitungsmethoden verstehen.
Python kann nur mit Standardbibliotheken gekratzt werden
Leistungsstärkere Bibliotheken von Drittanbietern (Bibliotheken, die von Benutzern auf der ganzen Welt außer Standardbibliotheken veröffentlicht werden) Existiert.
Mit solchen Werkzeugen können Sie mit einem relativ kurzen Programm schnell kratzen.
Insbesondere, weil Python für die Vorverarbeitung wie Datenanalyse und maschinelles Lernen nützlich ist. Man kann sagen, dass es eine hohe Affinität zur Nachkratzverarbeitung und -visualisierung hat.
Was ist HTML?
Abkürzung für Hyper Text Markup Language
Es ist eine der grundlegendsten Auszeichnungssprachen zum Erstellen von Webseiten.
Was ist HTML (Hyper Text Markup Language)? Wie der Name schon sagt, handelt es sich um eine leistungsstarke Text- und Auszeichnungssprache.
Eine Auszeichnungssprache ist eine Sprache zur Beschreibung der visuellen Struktur eines Satzes.
Es ist hauptsächlich eine Sprache, um das Lesen von Webseiten zu erleichtern.
Wie das Wort "Markup" bedeutet, wird eine Markierung (Tag) angebracht und die Größe und Position von Zeichen, Bildlinks usw. werden eingebettet.
Markup-Sprachen umfassen XML sowie HTML.
XML verfügt über eine Struktur, die für den Datenaustausch zwischen mehreren Anwendungen über das Internet geeignet ist.
Codierung ist die Codierung von analogen Signalen und digitalen Daten unter Verwendung einer bestimmten Methode. Dies ist eine der Möglichkeiten, die Daten nach bestimmten Regeln in einem anderen Format zu formatieren.
Der Computer verarbeitet numerisch. Zeigen Sie einfach mit Buchstaben und Symbolen an, damit Menschen leicht verstehen können Tatsächlich gibt es Zahlen (Bitfolgen), die allen Zeichen und Symbolen entsprechen.
Die Methode zum Bestimmen, welches Zeichen welcher Bitfolge zugewiesen ist, wird als Zeichencode bezeichnet.
Beispielsweise gibt es Zeichencodes mit den Namen UTF-8 und Shift-JIS.
Das japanische "a" ist "0xe38182" in der UTF-8-Zeichencodetabelle Es ist "0x81a0" in der Shift-JIS-Zeichencodetabelle.
Decodierung ist die Rückkehr codierter Daten in ihr ursprüngliches Format.
Dies wird als Entschlüsselung bezeichnet.
Zum Beispiel bedeutet das Dekodieren von Video, dass die auf der DVD aufgezeichneten digitalen Daten in das Originalvideo konvertiert werden. Wenn Sie nicht wie beim Codieren dekodieren, werden die Textdaten verstümmelt.
Beispielsweise ist in UTF-8 eine Datei wie folgt geschrieben.
Ich heiße Taro Yamada.
Wenn Sie diese Datei mit Shift-JIS dekodieren, was sich von der Codierung unterscheidet, ist dies wie folgt.
聘 √.
Grundsätzlich erkennt und decodiert der Webbrowser den Zeichencode automatisch. Benutzer können normalerweise surfen, ohne sich dieser Dinge bewusst zu sein.
Verwenden Sie Python, um Schritt für Schritt Webseiten abzurufen (zu crawlen).
Um eine Webseite zu erhalten, in der Standardbibliothek
urllib.Verwenden des Anforderungsmoduls
Geben Sie die URL im Argument der in diesem Modul enthaltenen urlopen-Methode an. urlopen () gibt ein Objekt vom Typ HTTPResponse zurück.
from urllib.request import urlopen
#Geben Sie als Beispiel die URL der Google-Startseite an
f = urlopen("https://www.google.co.jp")
# `urlopen()`Gibt ein Objekt vom Typ HTTPResponse zurück
print(type(f))
# >>>Ausgabeergebnis
<class 'http.client.HTTPResponse'>
Verweisen auf die abgerufene Webseite
Verwenden Sie die Lesemethode.
Die Daten werden jedoch immer noch codiert (nicht decodiert), indem sie einfach mit der Lesemethode gelesen werden. Es ist zu beachten, dass der Datentyp ein Bytetyp ist.
from urllib.request import urlopen
#Geben Sie als Beispiel die URL der Google-Startseite an
f = urlopen("https://www.google.co.jp")
# `urlopen()`Der Textkörper von HTML erhalten in`read()`Siehe in
read = f.read()
print(type(read))
print(read)
>>>Ausgabeergebnis
# `read()`Der Datentyp ist der Bytetyp
<class 'bytes'>
# `read()`Dies ist der Inhalt des HTML-Codes, auf den in verwiesen wird
b'<!doctype html><html itemscope=.....Folgendes wird weggelassen
Wie das obige Beispiel
read()Wenn Sie nicht die Anzahl der Zeichen angeben, die als Argument gelesen werden sollen
Holen Sie sich alle Elemente einer Webseite
read(Wortzahl)Und das Argument
Ruft die angegebene Anzahl von Zeichen von Anfang an ab.
Im vorherigen Abschnitt gibt die urlopen-Methode ein Objekt vom Typ HTTPResponse zurück. Ich habe bestätigt, dass die Antwort, die durch die Lesemethode dieses Objekts erhalten wird, vom Bytetyp ist.
Der Grund, warum der Datentyp dieser Antwort der Bytetyp ist Dies lag daran, dass die geladene Webseite nicht mit den codierten Rohdaten dekodiert wurde.
Um die erfasste Antwort als str-Typ zu behandeln Sie müssen den richtigen Zeichencode für die Dekodierung angeben.
Um den auf einer Webseite verwendeten Zeichencode herauszufinden
Vom HTTPResponse-Typobjekt, das von der urlopen-Methode erhalten wurde
Content-Navigieren Sie zum Typ-Header.
Content-Verweisen auf den Type-Header
Verwenden Sie die getheader-Methode
Inhalt als Argument-Geben Sie den Typ an.
from urllib.request import urlopen
#Geben Sie als Beispiel die URL der Google-Startseite an
f = urlopen("https://www.google.co.jp")
#HTTP-Header`Content-Type`Holen Sie sich den Wert von
f.getheader("Content-Type")
# >>>Ausgabeergebnis
'text/html; charset=Shift_JIS'
Der Wert des Content-Type-Headers wird als 'text / html; charset = Shift_JIS' zurückgegeben.
Dieser Zeichensatz = ist der Zeichencode der Webseite.
Der Zeichencode des Beispiels google.co.jp lautet Shift_JIS.
Wenn Zeichensatz=Wenn nicht festgelegt, werden die meisten japanischen Webseiten
UTF-Sie können es sich als 8 vorstellen.
Verwenden Sie den obigen regulären Ausdruck, um den Zeichencode zu erhalten Sie können es auch aus dem Wert des Content-Type-Headers abrufen.
Kombinieren Sie praktisch info () und get_content_charset (), um Folgendes zu erhalten.
Die info-Methode gibt ein Objekt vom Typ HTTPMessage zurück.
Holen Sie sich von diesem Objekt_content_Holen Sie sich den Zeichensatz mit der Zeichensatzmethode.
from urllib.request import urlopen
#Geben Sie als Beispiel die URL der Google-Startseite an
f = urlopen("https://www.google.co.jp")
# info()damit`HTTPMessage-Typ`Objekt abrufen
# get_content_charset()damit`charset`Erhalten
#Vom Argument`failobj=`Gibt die Codierung an, wenn kein Zeichensatz angegeben ist
encoding = f.info().get_content_charset(failobj="utf-8")
print(encoding)
# >>>Ausgabeergebnis
shift_jis
Da habe ich den Zeichencode der Webseite bekommen Als nächstes wird der HTML-Body mit dem richtigen Zeichencode dekodiert.
Decode verwendet die Decode-Methode
Geben Sie die Codierung im Argument an.
from urllib.request import urlopen
#Geben Sie als Beispiel die URL der Google-Startseite an
f = urlopen("https://www.google.co.jp")
#Zeichensatz abrufen
encoding = f.info().get_content_charset(failobj="utf-8")
# decode()Holen Sie sich HTML, indem Sie die Codierung in angeben
text = f.read().decode(encoding)
print(text)
# >>>Ausgabeergebnis
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head>.....Folgendes wird weggelassen
Bisher haben wir urllib verwendet, um die Elemente der Webseite abzurufen. Keine Standardbibliothek hier Holen Sie sich Webseiten einfacher als urllib
Einführung in das Anforderungsmodul.
urllib ist einfach zu bedienen, wenn Sie nur Post haben und Anfragen erhalten Wenn Sie etwas Kniffliges tun möchten, z. B. einen HTTP-Header oder eine Basisauthentifizierung hinzufügen (normalerweise Kennwortauthentifizierung) Eine etwas mühsame Vorverarbeitung ist erforderlich.
Das Anforderungsmodul verarbeitet automatisch die Zeichencode-Dekodierung sowie die Komprimierung von Dateien und Ordnern. Sie können mit einer einfachen Beschreibung in einer höheren Ebene arbeiten.
#Importieren Sie das Repuests-Modul
import requests
# `requests.get()`Ruft das Antwortobjekt für die in angegebene URL ab
r = requests.get("https://www.google.co.jp")
#Sie können den Zeichencode vom Antwortobjekt mit dem Codierungsattribut abrufen
print(r.encoding)
>>>Ausgabeergebnis
Shift_JIS
#Sie können die Antwort automatisch mit dem Textattribut in den Typ str dekodieren lassen.
print(r.text)
>>>Ausgabeergebnis
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head>.....Folgendes wird weggelassen
Recommended Posts