Scraping Web Python - Traitement des données

Dans les chapitres précédents, nous avons appris à extraire les données de pages Web ou à faire du scraping Web par divers modules Python. Dans ce chapitre, examinons différentes techniques pour traiter les données qui ont été grattées.

introduction

Pour traiter les données qui ont été grattées, nous devons stocker les données sur notre machine locale dans un format particulier comme une feuille de calcul (CSV), JSON ou parfois dans des bases de données comme MySQL.

Traitement des données CSV et JSON

Tout d'abord, nous allons écrire les informations, après avoir récupéré une page Web, dans un fichier CSV ou une feuille de calcul. Comprenons d'abord à travers un exemple simple dans lequel nous allons d'abord saisir les informations en utilisantBeautifulSoup module, comme précédemment, puis en utilisant le module Python CSV, nous écrirons ces informations textuelles dans un fichier CSV.

Tout d'abord, nous devons importer les bibliothèques Python nécessaires comme suit -

import requests
from bs4 import BeautifulSoup
import csv

Dans cette ligne de code suivante, nous utilisons des requêtes pour effectuer des requêtes HTTP GET pour l'url: https://authoraditiagarwal.com/ en effectuant une demande GET.

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

Maintenant, nous devons créer un objet Soup comme suit -

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

Maintenant, avec l'aide des prochaines lignes de code, nous allons écrire les données saisies dans un fichier CSV nommé dataprocessing.csv.

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

Après avoir exécuté ce script, les informations textuelles ou le titre de la page Web seront enregistrés dans le fichier CSV mentionné ci-dessus sur votre ordinateur local.

De même, nous pouvons enregistrer les informations collectées dans un fichier JSON. Ce qui suit est un script Python facile à comprendre pour faire la même chose dans laquelle nous récupérons les mêmes informations que dans le dernier script Python, mais cette fois, les informations récupérées sont enregistrées dans JSONfile.txt à l'aide du module JSON Python.

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)

Après avoir exécuté ce script, les informations saisies, c'est-à-dire le titre de la page Web, seront enregistrées dans le fichier texte mentionné ci-dessus sur votre machine locale.

Traitement des données à l'aide d'AWS S3

Parfois, nous souhaitons enregistrer des données récupérées dans notre stockage local à des fins d'archivage. Mais que se passe-t-il si nous devons stocker et analyser ces données à grande échelle? La réponse est un service de stockage cloud nommé Amazon S3 ou AWS S3 (Simple Storage Service). Fondamentalement, AWS S3 est un stockage d'objets conçu pour stocker et récupérer n'importe quelle quantité de données de n'importe où.

Nous pouvons suivre les étapes suivantes pour stocker des données dans AWS S3 -

Step 1- Nous avons d'abord besoin d'un compte AWS qui nous fournira les clés secrètes à utiliser dans notre script Python lors du stockage des données. Cela créera un compartiment S3 dans lequel nous pourrons stocker nos données.

Step 2 - Ensuite, nous devons installer boto3Bibliothèque Python pour accéder au compartiment S3. Il peut être installé à l'aide de la commande suivante -

pip install boto3

Step 3 - Ensuite, nous pouvons utiliser le script Python suivant pour récupérer les données de la page Web et les enregistrer dans le compartiment AWS S3.

Tout d'abord, nous devons importer des bibliothèques Python pour le scraping, ici nous travaillons avec requests, et boto3 enregistrement des données dans le compartiment S3.

import requests
import boto3

Nous pouvons maintenant extraire les données de notre URL.

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

Maintenant, pour stocker des données dans le compartiment S3, nous devons créer un client S3 comme suit -

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

La prochaine ligne de code créera le compartiment S3 comme suit -

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

Vous pouvez maintenant vérifier le bucket avec le nom our-content à partir de votre compte AWS.

Traitement des données avec MySQL

Apprenons à traiter les données à l'aide de MySQL. Si vous souhaitez en savoir plus sur MySQL, vous pouvez suivre le lien

À l'aide des étapes suivantes, nous pouvons récupérer et traiter les données dans la table MySQL -

Step 1- Tout d'abord, en utilisant MySQL, nous devons créer une base de données et une table dans lesquelles nous voulons enregistrer nos données récupérées. Par exemple, nous créons la table avec la requête suivante -

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

Step 2- Ensuite, nous devons gérer Unicode. Notez que MySQL ne gère pas l'Unicode par défaut. Nous devons activer cette fonctionnalité à l'aide des commandes suivantes qui changeront le jeu de caractères par défaut pour la base de données, pour la table et pour les deux colonnes -

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- Maintenant, intégrez MySQL avec Python. Pour cela, nous aurons besoin de PyMySQL qui peut être installé à l'aide de la commande suivante

pip install PyMySQL

Step 4- Maintenant, notre base de données nommée Scrap, créée plus tôt, est prête à enregistrer les données, après avoir été extraites du Web, dans la table nommée Scrap_pages. Ici, dans notre exemple, nous allons extraire des données de Wikipédia et elles seront enregistrées dans notre base de données.

Tout d'abord, nous devons importer les modules Python requis.

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

Maintenant, établissez une connexion, c'est-à-dire intégrez cela avec Python.

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()

Maintenant, connectez-vous à Wikipédia et obtenez des données.

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)

Enfin, nous devons fermer le curseur et la connexion.

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

Cela enregistrera les données recueillies à partir de Wikipedia dans la table nommée scrap_pages. Si vous êtes familier avec MySQL et le web scraping, alors le code ci-dessus ne sera pas difficile à comprendre.

Traitement des données avec PostgreSQL

PostgreSQL, développé par une équipe mondiale de volontaires, est un système de gestion de base de données relationnelle (RDMS) open source. Le processus de traitement des données récupérées à l'aide de PostgreSQL est similaire à celui de MySQL. Il y aurait deux changements: premièrement, les commandes seraient différentes de MySQL et deuxièmement, nous utiliserons icipsycopg2 Bibliothèque Python pour effectuer son intégration avec Python.

Si vous n'êtes pas familier avec PostgreSQL, vous pouvez l'apprendre sur Et avec l'aide de la commande suivante, nous pouvons installer la bibliothèque Python psycopg2 -

pip install psycopg2