Schreiben Sie einen einfachen kopflosen Web-Scraping-Bot in Python mit Beautiful Soup 4

In diesem Artikel verwenden wir Beautiful Soup 4, um einen einfachen kopflosen Web-Scraping-Bot in Python auf dem Alibaba Cloud Elastic Compute Service (ECS) mit CentOS 7 zu erstellen.

Richten Sie eine CentOS-Instanz in der Alibaba-Cloud ein

In diesem Tutorial Sie sollten daran gewöhnt sein, eine Alibaba Cloud-Instanz unter CentOS zu starten. Wenn Sie nicht wissen, wie Sie eine ECS-Instanz einrichten, lesen Sie dieses Tutorial. Wenn Sie bereits gekauft haben, [dieses Tutorial](https://www.alibabacloud.com/blog/how-to-set-up-your-first-centos-7-server-on-alibaba-cloud_593743?spm Überprüfen Sie = a2c65.11461447.0.0.45066ff90S594T) und konfigurieren Sie den Server entsprechend.

Ich habe für diese Lektion eine Instanz von CentOS bereitgestellt. Es ist besser, für dieses Projekt nicht aufgebläht zu sein. Dieses Projekt verwendet keine grafische Benutzeroberfläche (GUI). Daher wird empfohlen, dass Sie über grundlegende Kenntnisse in der Terminalbefehlszeile verfügen.

Installieren Sie Python 3, PIP3, Nano über die Terminalbefehlszeile

Es ist immer eine gute Idee, die gesamte Instanz zu aktualisieren. Aktualisieren Sie zunächst alle Pakete auf die neueste Version.

sudo yum update

Ich plane, Python für das grundlegende Web-Scraping "Bot" zu verwenden. Ich bin auch beeindruckt von der relativen Einfachheit der Sprache und der Vielfalt der Module. Verwenden Sie insbesondere die Module Requests und Beautiful Soup 4.

Normalerweise wird Python3 standardmäßig installiert. Wenn nicht, installieren Sie Python3 und Pip. Installieren Sie zunächst IUS (kurz für Inline with Upstream Stable). IUS ist ein Community-Projekt, das Red Hat Package Manager (RPM) -Pakete bereitstellt. Als nächstes installieren Sie python36u und pip.

sudo yum install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install python36u
sudo yum install python36u-pip

Pip ist ein Paketverwaltungssystem zum Installieren und Verwalten von Softwarepaketen, wie sie im Python-Paketindex enthalten sind. Pip ist eine Alternative zu easy_install.

Bitte beachten Sie, dass die Pip-Installation für Python 2.7 und die Python36u-Pip für Python 3 ist, da ich in der Vergangenheit Probleme hatte, Pip anstelle von Python36u-Pip zu installieren.

Nano ist ein einfacher Texteditor und eignet sich für solche Anwendungen. Jetzt installieren wir Nano.

sudo yum install nano

Installieren Sie Python-Pakete mit Pip

Als nächstes müssen Sie die Python-Pakete installieren, die Sie heute verwenden, Requests und Beautiful Soup 4.

Diese werden über PIP installiert.

pip36u install requests
pip36u install beautifulsoup4

Requests ist ein Python-Modul, mit dem Sie mit der Requests .get-Methode zu Webseiten navigieren können.

Mit Requests können Sie HTTP / 1.1-Anfragen mithilfe von Python-Skripten programmgesteuert senden. Es ist nicht erforderlich, Abfragezeichenfolgen manuell zur URL hinzuzufügen oder POST-Daten für die Formularcodierung zu verwenden. Keep-Alive- und HTTP-Verbindungspooling erfolgen zu 100% automatisch. Heute erhalten wir die Quelle der Webseite, die sich auf die Requests .get-Methode konzentriert.

Beautiful Soup ist eine Python-Bibliothek zum Abrufen von Daten aus HTML- und XML-Dateien. Sie können einfach navigieren, suchen, den Analysebaum ändern usw., indem Sie eine Verknüpfung mit Ihrem bevorzugten Parser herstellen.

Verwenden Sie Beautiful Soup 4 mit Pythons Standard-Datei html.parer, um die Daten aus den von Requests abgerufenen Webseitenquellen zu analysieren und zu organisieren. In diesem Tutorial verwenden wir die schöne "Prettify" -Methode für Suppen, um unsere Daten besser lesbar zu organisieren.

Erstellen Sie einen Ordner mit dem Namen Python_apps. Ändern Sie dann das aktuelle Arbeitsverzeichnis in Python_apps.

mkdir Python_apps
cd Python_apps

Schreiben Sie einen kopflosen Scraping-Bot in Python

Nun, ich freue mich endlich darauf. Sie können Python Headless Scraper Bots schreiben. Wir verwenden die Anfrage, um zur URL zu gelangen und die Quelle der Seite zu ermitteln. Verwenden Sie dann Beautiful Soup 4, um die HTML-Quelle zu analysieren und halb lesbar zu machen. Speichern Sie anschließend die analysierten Daten in einer lokalen Datei auf der Instanz. Jetzt machen wir uns an die Arbeit.

Verwenden Sie Requests, um die Seitenquelle abzurufen, und BeautifulSoup4, um die Daten in einem lesbaren Zustand zu formatieren. Verwenden Sie dann die Python-Methoden open () und write (), um die Seitendaten auf Ihrer lokalen Festplatte zu speichern. Lass uns gehen.

Öffnen Sie Nano oder Ihren bevorzugten Texteditor im Terminal und erstellen Sie eine neue Datei mit dem Namen "bot.py". Ich finde den Nano perfekt für grundlegende Textbearbeitungsfunktionen geeignet.

Fügen Sie zuerst den Import hinzu.

############################################################ IMPORTS
import requests
from bs4 import BeautifulSoup

Der folgende Code definiert einige globale Variablen.

1, Benutzer-URL-Eingabe 2. Requests.get-Methode, um die eingegebene URL abzurufen 3. Requests.text-Methode zum Speichern von Textdaten in Variablen

####### REQUESTS TO GET PAGE : BS4 TO PARSE DATA
#GLOBAL VARS
####### URL FOR SITE TO SCRAPE
url = input("WHAT URL WOULD YOU LIKE TO SCRAPE? ")
####### REQUEST GET METHOD for URL
r = requests.get("http://" + url)
####### DATA FROM REQUESTS.GET
data = r.text

Konvertieren wir nun die globale Variable "data" in ein BS4-Objekt und formatieren sie mit der BS4-Prettify-Methode.

####### MAKE DATA VAR BS4 OBJECT
source = BeautifulSoup(data, "html.parser")
####### USE BS4 PRETTIFY METHOD ON SOURCE VAR NEW VAR PRETTY_SOURCE
pretty_source = source.prettify()

Lassen Sie uns diese Variablen sowohl im Terminal als auch in der lokalen Datei ausgeben. Dies zeigt, welche Daten in die lokale Datei geschrieben werden, bevor sie tatsächlich in die lokale Datei geschrieben werden.

print(source)

Holen Sie sich zuerst die Quelle in einem großen Textblock. Dies ist für Menschen sehr schwer zu entziffern, daher verlassen wir uns bei der Formatierung auf Beautiful Soup. Rufen wir also die Prettify-Methode auf, um unsere Daten besser zu organisieren. Dies erleichtert dem Menschen das Lesen erheblich. Geben Sie dann die Quelle nach der BS4-Methode prettify () aus.

print(pretty_source)

Nach dem Ausführen des Codes sollte Ihr Gerät nun das vordefinierte Format der HTML-Quelle für die von Ihnen eingegebene Seite anzeigen.

Speichern Sie diese Datei nun auf einer lokalen Festplatte in der Alibaba Cloud ECS-Instanz. Dazu müssen Sie zuerst die Datei im Schreibmodus öffnen.

Übergeben Sie dazu die Zeichenfolge "w" als zweites Argument der open () -Methode.

####### OPEN SOURCE IN WRITE MODE WITH "W" TO VAR LOCAL_FILE
####### MAKE A NEW FILE
local_file = open(url.strip("https://" + "http://") + "_scrapped.txt" , "w")
####### WRITE THE VAR PRETTY_SOUP TO FILE
local_file.write(pretty_source)
### GET RID OF ENCODING ISSUES ##########################################
#local_file.write(pretty_source.encode('utf-8'))
####### CLOSE FILE
local_file.close()

Im obigen Codeblock wird eine Datei mit dem Namen "_scrapped.txt" in der zuvor eingegebenen URL erstellt und eine zu öffnende Variable erstellt. Das erste Argument der open-Methode ist der Dateiname auf der lokalen Festplatte. "HTTPS: //" und "HTTP: //" wurden aus dem Dateinamen entfernt. Wenn Sie dies nicht entfernen, ist der Dateiname ungültig. Das zweite Argument ist in diesem Fall die Schreibberechtigung.

Übergeben Sie dann die Variable "pretty_source" als Argument an die .write-Methode und schreiben Sie in die Variable "local_file". Verwenden Sie auskommentierte Zeilen, wenn Sie den Text in UTF-8 codieren müssen, um korrekt in eine lokale Datei zu drucken. Schließen Sie dann die lokale Textdatei.

Lassen Sie uns den Code ausführen und sehen, was passiert.

python3.6  bot.py

Sie werden aufgefordert, die URL einzugeben, die Sie verschrotten möchten. Versuchen wir es mit https://www.wikipedia.org. Der ordnungsgemäß formatierte Quellcode einer bestimmten Website wird jetzt als TXT-Datei in Ihrem lokalen Arbeitsverzeichnis gespeichert.

Der endgültige Code für dieses Projekt sieht folgendermaßen aus:

print("*" * 30 )
print("""
# 
# SCRIPT TO SCRAPE AND PARSE DATA FROM
# A USER INPUTTED URL. THEN SAVE THE PARSED
# DATA TO THE LOCAL HARD DRIVE.
""")
print("*" * 30 )

############################################################ IMPORTS
import requests
from bs4 import BeautifulSoup

####### REQUESTS TO GET PAGE : BS4 TO PARSE DATA
#GLOBAL VARS
####### URL FOR SITE TO SCRAPE
url = input("ENTER URL TO SCRAPE")

####### REQUEST GET METHOD for URL
r = requests.get(url)

####### DATA FROM REQUESTS.GET
data = r.text

####### MAKE DATA VAR BS4 OBJECT 
source = BeautifulSoup(data, "html.parser")


####### USE BS4 PRETTIFY METHOD ON SOURCE VAR NEW VAR PRETTY_SOURCE
pretty_source = source.prettify()

print(source)

print(pretty_source)

####### OPEN SOURCE IN WRITE MODE WITH "W" TO VAR LOCAL_FILE
####### MAKE A NEW FILE
local_file = open(url.strip("https://" + "http://") + "_scrapped.txt" , "w")
####### WRITE THE VAR PRETTY_SOUP TO FILE
local_file.write(pretty_source)
#local_file.write(pretty_source.decode('utf-8','ignore'))
#local_file.write(pretty_source.encode('utf-8')
####### CLOSE FILE
local_file.close()

Überblick

Sie haben gelernt, wie Sie mit Beautiful Soup 4 in Python auf einer ECS-Instanz (Alibaba Cloud Elastic Compute Service) mit CentOS 7 einen einfachen kopflosen Web-Scraping-Bot erstellen. Ich habe Requests verwendet, um den Quellcode für eine bestimmte Webseite abzurufen, Beautiful Soup 4 zum Parsen der Daten verwendet und schließlich den Quellcode der abgekratzten Webseite in einer lokalen Textdatei auf der Instanz gespeichert. Sie können das Modul Schöne Suppe 4 verwenden, um den Text für die menschliche Lesbarkeit zu formatieren.

Recommended Posts

Schreiben Sie einen einfachen kopflosen Web-Scraping-Bot in Python mit Beautiful Soup 4
Versuchen Sie es mit Python + Beautiful Soup
Scraping mit Selen in Python (Basic)
Kratzen mit schöner Suppe in 10 Minuten
[Python] Eine Tabelle mit Beautiful Soup kratzen
Kratzen mit schöner Suppe
[Python] Löschen Sie, indem Sie ein Tag mit Beautiful Soup angeben
Web Scraping mit Python + JupyterLab
Schaben mit Selen in Python
Schaben mit Chromedriver in Python
Scraping mit Selen in Python
Web Scraping Anfänger mit Python
Tischkratzen mit schöner Suppe
Scraping von Google News-Suchergebnissen in Python (2) Verwenden Sie Beautiful Soup
Schreiben Sie eine Dichotomie in Python
Mehrere Seiten mit Beautiful Soup verschrotten
[Python] Ein Memorandum der schönen Suppe4
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Website-Scraping mit Beautiful Soup in Python
Schreiben Sie ein Batch-Skript mit Python3.5 ~
Rufen Sie die URL des Linkziels ab, indem Sie den Textsatz mit Python Scraping (Beautiful Soup) + XPath angeben
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
WEB-Scraping mit Python (für persönliche Notizen)
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Erste Schritte mit Python Web Scraping Practice
Schreiben Sie eine kurze Eigenschaftsdefinition in Python
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
[Persönlicher Hinweis] Scraping von Webseiten in Python3
Pferderennseite Web Scraping mit Python
[Python] Eine schnelle Webanwendung mit Bottle!
Scraping von Websites mit JavaScript in Python
Erste Schritte mit Python Web Scraping Practice
Schreiben Sie eine einfache Giermethode in Python
Schreiben Sie einen TCP-Client mit Python Twisted
Versuchen Sie HTML-Scraping mit der Python-Bibliothek
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Führen Sie eine Python-Webanwendung mit Docker aus
Erstellen Sie ein Webframework mit Python! (1)
Üben des Web-Scrapings mit Python und Selen
Einfaches Web-Scraping mit Python und Ruby
Machen wir einen Twitter-Bot mit Python!
Erstellen Sie ein Webframework mit Python! (2)
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Lassen Sie uns JavaScript wegwerfen und ein Web-Frontend in Python schreiben!
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
Scraping mit Python
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Machen Sie Twitter Trend Bot mit Heroku + Python
Scraping mit Python
Erstellen Sie mit Minette für Python einen LINE BOT
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Starten Sie mit Docker einen einfachen Python-Webserver
Schritte zum Entwickeln einer Webanwendung in Python