Lernnotizen aus den Kapiteln 1 bis 3 von "Scraping & Machine Learning with Python". Die Themen zum Scraping reichen von Kapitel 1 bis Kapitel 3. Das vierte und die folgenden Kapitel sind der Teil des maschinellen Lernens.
Ein Paket von Modulen, die URLs verarbeiten. Unten finden Sie ein Beispiel für die Methode.
--urlretrieve () ・ ・ ・ Daten direkt herunterladen (Dateien werden lokal gespeichert) --urlopen () ・ ・ ・ In Erinnerung bleiben. Wenn Sie es per FTP erhalten möchten, ändern Sie einfach den Parameter https: //, der an urlopen () übergeben wurde, in ftp: //
Wenn Sie eine Anforderung mit get-Parametern senden möchten, erstellen Sie Schlüssel- / Wertparameterdaten mit Variablen vom Typ Wörterbuch.
Verwenden Sie das Modul urllib.parse, um Variablen per URL zu codieren. Fügen Sie die codierte Variable zur URL-Zeichenfolge hinzu (vergessen Sie nicht das "?" Dazwischen).
Importieren Sie das sys-Modul, um Befehlszeilenargumente abzurufen.
Eine Bibliothek, die HTML und XML analysiert. Daten können nicht heruntergeladen werden. Wenn Sie es herunterladen möchten, verwenden Sie urllib.
Python-Paketverwaltungssystem.
Abkürzung für Python Package Index.
Wenn Sie die HTML-Struktur und die Grundlagen von CSS kennen, können Sie grundsätzlich alle Daten abrufen. Wenn sich die Seitenstruktur jedoch ändert, muss sie korrigiert werden.
Beispiel: Natsume Sosekis Seite von Aozora Bunko https://www.aozora.gr.jp/index_pages/person148.html
Die mit dem CSS-Selektor für das Li-Tag oben in der Arbeitsliste erzielten Ergebnisse sind wie folgt.
body > ol:nth-child(8) > li:nth-child(1)
n-tes Kind (n) ・ ・ ・ Bedeutung des n-ten Elements
Auf der Arbeitsseite wird das Tag \
Wenn Sie einen eleganten CSS-Selektor schreiben, können Sie ein bestimmtes Element auf einmal abrufen.
** Es ist wichtig, sich das Format des Selektors zu merken. Entspricht dem Erinnern an reguläre Ausdrücke ** </ font>
Das Merkmal der find () -Methode besteht darin, dass mehrere Bedingungen gleichzeitig angegeben werden können.
Es ist auch möglich, Elemente in Kombination mit regulären Ausdrücken zu extrahieren.
Wenn das Verknüpfungsziel des Tags \ ein relativer Pfad ist, konvertieren Sie es mit der Methode urllib.parse.urljoin () in einen absoluten Pfad.
Um das Ganze herunterzuladen, müssen Sie den Link rekursiv herunterladen.
Importieren Sie das Modul re, um reguläre Ausdrücke zu verwenden.
Ein Paket namens Anfragen ist praktisch für den Zugriff mit Cookies.
Starten Sie eine Sitzung mit der Methode request.session ().
Verwenden Sie das Entwicklertool des Browsers, um die beim Anmelden gesendeten Daten zu überprüfen.
Überprüfen Sie auf der Registerkarte "Netzwerk" der Entwicklertools. Um die übermittelten Formulardaten anzuzeigen, aktivieren Sie "Formulardaten" auf der Registerkarte "Kopfzeile".
"Selen" ist bekannt als Tool zur Fernsteuerung eines Webbrowsers.
Wenn Sie es ohne Kopf (ohne Bildschirmanzeige) über die Befehlszeile verwenden, wird der Browser nicht einzeln gestartet.
Neben Chrome, Firefox, Opera usw. können auch iOS- und Android-Browser betrieben werden.
Wenn Sie mit Selen zugreifen, entspricht dies dem Zugriff mit einem Browser, sodass Sie die Sitzung nicht verwalten müssen.
Mit Selen kann man ziemlich viel machen. Die meisten menschlichen Operationen im Browser können automatisch ausgeführt werden.
Wenn Sie die Methode execute_script () verwenden, können Sie außerdem ein beliebiges js ausführen.
Da Wikipedia das Crawlen verbietet, ist direktes Scraping NG. Es gibt eine Site, auf der Sie stattdessen Speicherauszugsdaten abrufen können. Verwenden Sie diese Daten.
for row in result:
print("," .join(row))
--find_all () ・ ・ ・ Wenn Sie der Methode eine Liste geben, können Sie mehrere Tags gleichzeitig abrufen. --find_elements_by_css_selector () elements ・ elements "Elemente" und ** Plural **, also mehrere Elemente gleichzeitig erhalten --find_element_by_css_selector () element ・ element "Element" und ** Singularform **, also immer nur ein Element gleichzeitig. Wenn Sie diese Methode mit der Absicht aufrufen, mehrere zu erfassen, handelt es sich nicht um einen Grammatikfehler, sie funktioniert jedoch nicht wie erwartet. Seien Sie also vorsichtig.
Sie können einen Screenshot auch mit der Methode browser.save_screenshot () erstellen. Dies ist nützlich, wenn Sie wissen möchten, wie der tatsächliche Bildschirm im Headless-Modus aussieht.
Es gibt viele Teile des Schabens, die nur durch tatsächliches Testen verstanden werden können. Überlegen Sie, welche Art von Operation möglich ist, während Sie den tatsächlichen Bildschirm (HTML) analysieren.
** Es ist wichtig, die Struktur der Site zu verstehen. Außerdem sind CSS-Kenntnisse erforderlich. ** </ font>
Eine Funktion einer Site wird veröffentlicht, damit sie von außen verwendet werden kann. Kommunizieren Sie über HTTP-Kommunikation und erfassen Sie Daten im XML- oder JSON-Format.
Beachten Sie, dass sich die Spezifikationen der Web-API aufgrund der Benutzerfreundlichkeit der Betriebsseite ändern können.
Ein Teil der Zeichenfolge kann später als variabler Wert geändert werden.
(Beispiel)
str = "hogehoge{name}fugafuga"
str.format(name="Eric Clapton")
** Funktionsname = Lambda Argument: Inhalt verarbeiten ** Eine Funktion, die im Format geschrieben werden kann. (Beispiel)
k2c = lambda k: k - 273.5
MacOS und Linux verwenden einen Daemon-Prozess namens "cron". Verwenden Sie "Task Scheduler" unter Windows.
Ein Programm, das sich in einem UNIX-basierten Betriebssystem im Hauptspeicher befindet und eine bestimmte Funktion bietet. Eine Art Hintergrundprozess, der unabhängig von Benutzeroperationen verarbeitet wird.
** Periodische Hauptverarbeitung **
Um cron einzustellen, führen Sie den Befehl "crontab" aus und bearbeiten Sie die dort geöffnete Datei. Wenn Sie cron auf einem Mac bearbeiten möchten, ist der Nano-Editor praktisch.
Ein Rahmen zum Crawlen und Schaben.
** Grundlegender Arbeitsablauf **
Erstellen Sie eine Unterklasse, die die Spider-Klasse erbt. Der Ort ist das Spinnenverzeichnis.
--parse () ・ ・ ・ Beschreibt den Analyseprozess des Textes, der nach der Datenerfassung ausgeführt werden soll. --css () ・ ・ ・ Extrahieren Sie DOM-Elemente mit dem CSS-Selektor --extract () ・ ・ ・ Liefert mehrere darin enthaltene Elemente im Listenformat --extract_first () ・ ・ ・ Eine Methode, die das erste im Ergebnis enthaltene Element zurückgibt
Beispiel für einen Scrapy-Ausführungsbefehl
scrapy crawl soseki --nolog
Wenn "--nolog" beschrieben wird, wird das Operationsprotokoll weggelassen. Wenn nicht angehängt, wird das Betriebsprotokoll an die Konsole ausgegeben.
Der Rückgabewert der Methode ist Yield. Die Regel ist, nach Rendite statt nach Rendite zurückzukehren.
Eine Shell, die Scrapy interaktiv ausführen kann. Dies ist nützlich, wenn Sie überprüfen möchten, ob Daten mit dem CSS-Selektor korrekt erfasst werden können.
Ein Befehl zum Erstellen einer Unterklasse der Spider-Klasse.
scrapy genspider soseki3 www.aozora.gr.jp
Die parse () -Methode wird automatisch aufgerufen, nachdem die in start_urls angegebene URL abgerufen wurde.
Verwenden Sie die Methode response.follow (), um die verknüpfte Seite abzurufen.
Verwenden Sie zum Herunterladen der Datei die Methoderapy.Request (). Sie können die Methode nach Abschluss der Verarbeitung im Rückrufparameter angeben.
Scrapy kann seine Funktionalität durch die Einführung von Middleware erweitern. Der Mechanismus kann eingeführt werden, um Selen einzubauen.
** Format wenn angegeben ** (Name des Projektverzeichnisses). (Name der Middleware-Datei). (Name der Middleware-Klasse)
#Beispiel für die Registrierung von Middleware
custom_settings = {
"DOWNLOADER_MIDDLEWARES": {
"sakusibbs.selenium_middleware.SeleniumMiddleware": 0
}
}
Die Methode start_requests () ist eine Methode, die die Verarbeitung definiert, die unmittelbar vor der Anforderung automatisch ausgeführt wird.
Es gibt zwei Arten von Daten, die im Web verteilt werden: Textdaten und Binärdaten.
--Binärdaten Formatbeispiel: Bild (PNG, JPEG, GIF usw.), Excel-Format Die Datengröße ist kleiner als die Textdaten.
Bitte beachten Sie, dass die URL der Daten zur Katastrophenverhütung von Yokohama City im Buch geändert wurde. Stand 22. Oktober 2020: https://www.city.yokohama.lg.jp/kurashi/bousai-kyukyu-bohan/bousai-saigai/bosai/data/data.files/0006_20180911.xml
Beachten Sie, dass beim Parsen von XML mit BeautifulSoup alle Großbuchstaben in Kleinbuchstaben konvertiert werden.
(Beispiel)
<LocationInformation>
<Type>Regionale Katastrophenschutzbasis</Type>
<Definition>Es ist eine Basis, die mit einem Ort für die Evakuierung der betroffenen Bewohner, Informationsübertragung und -übertragung sowie Speicherfunktionen ausgestattet ist.</Definition>
<Name>Rohweizen Grundschule</Name>
<Address>4-15 Rohe Gerste, Tsurumi-ku, Stadt Yokohama, Präfektur Kanagawa-1</Address>
<Lat>35.49547584</Lat>
<Lon>139.6710972</Lon>
<Kana>Namamugi Shogakko</Kana>
<Ward>Tsurumi Ward</Ward>
<WardCode>01</WardCode>
</LocationInformation>
Wenn Sie "Standortinformationen" aus den oben genannten Daten erhalten möchten, ist dies wie folgt.
Falsch :oup.find_all ("LocationInformation"): Richtig :oup.find_all ("Standortinformationen"):
Wenn Sie mit Excel-Dateien arbeiten, installieren Sie xlrd zusätzlich zu openpyxl.
Python unterstützt verschiedene DBs. SQLite ist in die Standardbibliothek integriert und kann sofort durch Importieren von sqlite3 verwendet werden.
Die Installation ist im Voraus erforderlich, um MySQL verwenden zu können. Installation mit apt-get in einer Linux-Umgebung. Für Mac und Windows ist es praktisch, MAMP zu installieren, das auch das MySQL-Verwaltungstool "phpMyAdmin" enthält.
Unterschied in der Angabe variabler Elemente in SQL.
--SQLite ...? --MySQL ・ ・ ・% s
Eine der Dokumenttypdatenbanken. Das relationale Datenbankverwaltungssystem (RDBMS) erfordert eine Schemadefinition mit CREATE TABLE, für die Dokumenttypdatenbank ist jedoch keine Schemadefinition erforderlich.
Eine Bibliothek zur Verwendung dokumentenorientierter Datenbanken. Es ist einfacher von Python als MongoDB zu verwenden. (MongoDB erfordert die Installation von MongoDB selbst, aber TinyDB kann verwendet werden, indem das Paket mit pip installiert wird.)
Wenn Sie mit Daten einer bestimmten Größe arbeiten, ist MongoDB besser geeignet.
Recommended Posts