Python Web Scraping - Datenverarbeitung

In früheren Kapiteln haben wir gelernt, wie Sie Daten von Webseiten extrahieren oder mit verschiedenen Python-Modulen Web-Scraping durchführen können. Lassen Sie uns in diesem Kapitel verschiedene Techniken untersuchen, um die Daten zu verarbeiten, die abgekratzt wurden.

Einführung

Um die Daten zu verarbeiten, die gelöscht wurden, müssen wir die Daten auf unserem lokalen Computer in einem bestimmten Format wie Spreadsheet (CSV), JSON oder manchmal in Datenbanken wie MySQL speichern.

CSV- und JSON-Datenverarbeitung

Zuerst schreiben wir die Informationen nach dem Abrufen von der Webseite in eine CSV-Datei oder eine Tabelle. Lassen Sie uns zunächst anhand eines einfachen Beispiels verstehen, in dem wir die Informationen zunächst anhand von erfassenBeautifulSoup Modul, wie zuvor, und dann unter Verwendung des Python-CSV-Moduls werden wir diese Textinformationen in die CSV-Datei schreiben.

Zuerst müssen wir die erforderlichen Python-Bibliotheken wie folgt importieren:

import requests
from bs4 import BeautifulSoup
import csv

In dieser folgenden Codezeile verwenden wir Anforderungen, um GET-HTTP-Anforderungen für die URL zu erstellen: https://authoraditiagarwal.com/ durch eine GET-Anfrage.

r = requests.get('https://authoraditiagarwal.com/')

Jetzt müssen wir ein Suppenobjekt wie folgt erstellen:

soup = BeautifulSoup(r.text, 'lxml')

Mit Hilfe der nächsten Codezeilen schreiben wir nun die erfassten Daten in eine CSV-Datei mit dem Namen dataprocessing.csv.

f = csv.writer(open(' dataprocessing.csv ','w'))
f.writerow(['Title'])
f.writerow([soup.title.text])

Nach dem Ausführen dieses Skripts werden die Textinformationen oder der Titel der Webseite in der oben genannten CSV-Datei auf Ihrem lokalen Computer gespeichert.

Ebenso können wir die gesammelten Informationen in einer JSON-Datei speichern. Das Folgende ist ein leicht verständliches Python-Skript, mit dem wir dieselben Informationen wie im letzten Python-Skript abrufen. Diesmal werden die erfassten Informationen jedoch mithilfe des JSON-Python-Moduls in JSONfile.txt gespeichert.

import requests
from bs4 import BeautifulSoup
import csv
import json
r = requests.get('https://authoraditiagarwal.com/')
soup = BeautifulSoup(r.text, 'lxml')
y = json.dumps(soup.title.text)
with open('JSONFile.txt', 'wt') as outfile:
   json.dump(y, outfile)

Nach dem Ausführen dieses Skripts werden die erfassten Informationen, dh der Titel der Webseite, in der oben genannten Textdatei auf Ihrem lokalen Computer gespeichert.

Datenverarbeitung mit AWS S3

Manchmal möchten wir möglicherweise kratzende Daten zu Archivierungszwecken in unserem lokalen Speicher speichern. Was aber, wenn wir diese Daten in großem Umfang speichern und analysieren müssen? Die Antwort lautet Cloud-Speicherdienst mit dem Namen Amazon S3 oder AWS S3 (Simple Storage Service). Grundsätzlich ist AWS S3 ein Objektspeicher, mit dem beliebige Datenmengen von überall gespeichert und abgerufen werden können.

Wir können die folgenden Schritte zum Speichern von Daten in AWS S3 ausführen:

Step 1- Zuerst benötigen wir ein AWS-Konto, das uns die geheimen Schlüssel zur Verwendung in unserem Python-Skript beim Speichern der Daten zur Verfügung stellt. Es wird ein S3-Bucket erstellt, in dem wir unsere Daten speichern können.

Step 2 - Als nächstes müssen wir installieren boto3Python-Bibliothek für den Zugriff auf den S3-Bucket. Es kann mit Hilfe des folgenden Befehls installiert werden -

pip install boto3

Step 3 - Als Nächstes können wir das folgende Python-Skript verwenden, um Daten von der Webseite zu kratzen und im AWS S3-Bucket zu speichern.

Zuerst müssen wir Python-Bibliotheken zum Scraping importieren, hier arbeiten wir requests, und boto3 Speichern von Daten im S3-Bucket.

import requests
import boto3

Jetzt können wir die Daten von unserer URL kratzen.

data = requests.get("Enter the URL").text

Zum Speichern von Daten im S3-Bucket müssen wir nun den S3-Client wie folgt erstellen:

s3 = boto3.client('s3')
bucket_name = "our-content"

In der nächsten Codezeile wird der S3-Bucket wie folgt erstellt:

s3.create_bucket(Bucket = bucket_name, ACL = 'public-read')
s3.put_object(Bucket = bucket_name, Key = '', Body = data, ACL = "public-read")

Jetzt können Sie den Bucket mit dem Namen our-content in Ihrem AWS-Konto überprüfen.

Datenverarbeitung mit MySQL

Lassen Sie uns lernen, wie Daten mit MySQL verarbeitet werden. Wenn Sie mehr über MySQL erfahren möchten, können Sie dem Link folgenhttps://www.tutorialspoint.com/mysql/.

Mit Hilfe der folgenden Schritte können wir Daten in die MySQL-Tabelle kratzen und verarbeiten -

Step 1- Zuerst müssen wir mit MySQL eine Datenbank und eine Tabelle erstellen, in der wir unsere Scraped-Daten speichern möchten. Zum Beispiel erstellen wir die Tabelle mit der folgenden Abfrage:

CREATE TABLE Scrap_pages (id BIGINT(7) NOT NULL AUTO_INCREMENT,
title VARCHAR(200), content VARCHAR(10000),PRIMARY KEY(id));

Step 2- Als nächstes müssen wir uns mit Unicode befassen. Beachten Sie, dass MySQL standardmäßig keinen Unicode verarbeitet. Wir müssen diese Funktion mithilfe der folgenden Befehle aktivieren, mit denen der Standardzeichensatz für die Datenbank, die Tabelle und beide Spalten geändert wird.

ALTER DATABASE scrap CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE Scrap_pages CONVERT TO CHARACTER SET utf8mb4 COLLATE
utf8mb4_unicode_ci;
ALTER TABLE Scrap_pages CHANGE title title VARCHAR(200) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE pages CHANGE content content VARCHAR(10000) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

Step 3- Integrieren Sie jetzt MySQL in Python. Dazu benötigen wir PyMySQL, das mit Hilfe des folgenden Befehls installiert werden kann

pip install PyMySQL

Step 4- Jetzt kann unsere zuvor erstellte Datenbank mit dem Namen Scrap die Daten nach dem Scraping aus dem Web in einer Tabelle mit dem Namen Scrap_pages speichern. Hier in unserem Beispiel werden wir Daten aus Wikipedia kratzen und sie werden in unserer Datenbank gespeichert.

Zuerst müssen wir die erforderlichen Python-Module importieren.

from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import pymysql
import re

Stellen Sie nun eine Verbindung her, die in Python integriert ist.

conn = pymysql.connect(host='127.0.0.1',user='root', passwd = None, db = 'mysql',
charset = 'utf8')
cur = conn.cursor()
cur.execute("USE scrap")
random.seed(datetime.datetime.now())
def store(title, content):
   cur.execute('INSERT INTO scrap_pages (title, content) VALUES ''("%s","%s")', (title, content))
   cur.connection.commit()

Verbinden Sie sich jetzt mit Wikipedia und erhalten Sie Daten von Wikipedia.

def getLinks(articleUrl):
   html = urlopen('http://en.wikipedia.org'+articleUrl)
   bs = BeautifulSoup(html, 'html.parser')
   title = bs.find('h1').get_text()
   content = bs.find('div', {'id':'mw-content-text'}).find('p').get_text()
   store(title, content)
   return bs.find('div', {'id':'bodyContent'}).findAll('a',href=re.compile('^(/wiki/)((?!:).)*$'))
links = getLinks('/wiki/Kevin_Bacon')
try:
   while len(links) > 0:
      newArticle = links[random.randint(0, len(links)-1)].attrs['href']
      print(newArticle)
      links = getLinks(newArticle)

Zuletzt müssen wir sowohl den Cursor als auch die Verbindung schließen.

finally:
   cur.close()
   conn.close()

Dadurch werden die von Wikipedia gesammelten Daten in einer Tabelle mit dem Namenrap_pages gespeichert. Wenn Sie mit MySQL und Web Scraping vertraut sind, ist der obige Code nicht schwer zu verstehen.

Datenverarbeitung mit PostgreSQL

PostgreSQL wurde von einem weltweiten Team von Freiwilligen entwickelt und ist ein relationales Open-Source-Datenbankmanagementsystem (RDMS). Der Prozess der Verarbeitung der Scraped-Daten mit PostgreSQL ähnelt dem von MySQL. Es würde zwei Änderungen geben: Erstens würden sich die Befehle von MySQL unterscheiden, und zweitens werden wir hier verwendenpsycopg2 Python-Bibliothek, um die Integration mit Python durchzuführen.

Wenn Sie mit PostgreSQL nicht vertraut sind, können Sie es unter lernen https://www.tutorialspoint.com/postgresql/. Und mit Hilfe des folgenden Befehls können wir die Python-Bibliothek psycopg2 installieren -

pip install psycopg2