Dans cet article, nous allons utiliser Beautiful Soup 4 pour créer un "bot" de base de scraping web sans tête en Python sur Alibaba Cloud Elastic Compute Service (ECS) avec CentOS 7.
Dans Ce didacticiel Vous devez être habitué à lancer une instance Alibaba Cloud exécutant CentOS. Si vous ne savez pas comment configurer une instance ECS, consultez ce didacticiel. Si vous avez déjà acheté, [ce tutoriel](https://www.alibabacloud.com/blog/how-to-set-up-your-first-centos-7-server-on-alibaba-cloud_593743?spm Vérifiez = a2c65.11461447.0.0.45066ff90S594T) et configurez le serveur en conséquence.
J'ai déployé une instance de CentOS pour cette leçon. Il vaut mieux ne pas être gonflé pour ce projet. Ce projet n'utilise pas de GUI (Graphical User Interface), il est donc recommandé d'avoir des connaissances de base en ligne de commande de terminal.
C'est toujours une bonne idée de mettre à jour l'ensemble d'une instance particulière. Tout d'abord, mettez à jour tous les packages vers la dernière version.
sudo yum update
Je prévois d'utiliser Python pour le "bot" de base du scraping Web. Je suis également impressionné par la simplicité relative du langage et la variété des modules. En particulier, utilisez les modules Requests et Beautiful Soup 4.
Normalement, Python3 est installé par défaut, mais sinon, installez Python3 et Pip. Tout d'abord, installez IUS (abréviation de Inline with Upstream Stable). IUS est un projet communautaire qui fournit des packages Red Hat Package Manager (RPM). Ensuite, installez python36u et pip.
sudo yum install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install python36u
sudo yum install python36u-pip
Pip est un système de gestion de packages permettant d'installer et de gérer des packages logiciels tels que ceux trouvés dans l'index des packages Python. Pip est une alternative à easy_install.
Veuillez noter que l'installation de pip est pour Python 2.7 et que python36u-pip est pour Python 3 car j'ai eu des difficultés à installer pip au lieu de python36u-pip dans le passé.
Nano est un éditeur de texte de base et est très pratique pour de telles applications. Maintenant, installons Nano.
sudo yum install nano
Ensuite, vous devez installer les packages Python que vous utilisez aujourd'hui, Requests et Beautiful Soup 4.
Ceux-ci sont installés via PIP.
pip36u install requests
pip36u install beautifulsoup4
Requests est un module Python qui vous permet de naviguer vers des pages Web à l'aide de la méthode Requests .get.
Requests vous permet d'envoyer des requêtes HTTP / 1.1 par programmation à l'aide de scripts Python. Il n'est pas nécessaire d'ajouter manuellement des chaînes de requête à l'URL ou d'encoder les données POST. Le maintien en vie et le regroupement de connexions HTTP sont 100% automatiques. Aujourd'hui, nous obtiendrons la source de la page Web centrée sur la méthode Requests .get.
Beautiful Soup est une bibliothèque Python permettant de récupérer des données à partir de fichiers HTML et XML. Vous pouvez facilement naviguer, rechercher, modifier l'arborescence d'analyse, etc. en établissant un lien avec votre analyseur préféré.
Utilisez Beautiful Soup 4 avec le html.parer standard de Python pour analyser et organiser les données des sources de page Web récupérées par Requests. Dans ce tutoriel, nous utilisons la méthode de la belle soupe "prettify" pour organiser nos données d'une manière plus lisible par l'homme.
Créez un dossier appelé Python_apps. Puis changez le répertoire de travail actuel en Python_apps.
mkdir Python_apps
cd Python_apps
Eh bien, j'ai enfin hâte d'y être. Vous pouvez écrire des robots de raclage sans tête Python. Nous allons à l'URL et utilisons la requête pour obtenir la source de la page. Utilisez ensuite Beautiful Soup 4 pour analyser la source HTML et la rendre semi-lisible. Après cela, enregistrez les données analysées dans un fichier local sur l'instance. Maintenant, mettons-nous au travail.
Utilisez Requests pour obtenir la source de la page et BeautifulSoup4 pour mettre en forme les données dans un état lisible. Utilisez ensuite les méthodes Python open () et write () pour enregistrer les données de la page sur votre disque dur local. Allons-y.
Ouvrez Nano ou votre éditeur de texte préféré dans le terminal et créez un nouveau fichier nommé "bot.py". Je trouve le Nano parfaitement adapté aux fonctionnalités d'édition de texte de base.
Tout d'abord, ajoutez l'importation.
############################################################ IMPORTS
import requests
from bs4 import BeautifulSoup
Le code ci-dessous définit certaines variables globales.
1, entrée URL utilisateur 2. Méthode Requests.get pour obtenir l'URL saisie 3. Méthode Requests.text pour enregistrer des données texte dans des variables
####### 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
Maintenant, convertissons la variable globale "data" en un objet BS4 et formatez-le avec la méthode BS4 prettify.
####### 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()
Sortons ces variables dans le terminal ainsi que dans le fichier local. Cela montre quelles données seront écrites dans le fichier local avant d'être réellement écrites dans le fichier local.
print(source)
Obtenez d'abord la source dans un gros morceau de texte. C'est très difficile à déchiffrer pour les humains, nous allons donc nous fier à Beautiful Soup pour aider au formatage. Appelons donc la méthode Prettify pour mieux organiser nos données. Cela rend la lecture beaucoup plus facile pour les humains. Puis sortez la source après la méthode BS4 prettify ().
print(pretty_source)
Après avoir exécuté le code, votre appareil devrait maintenant afficher le format prédéfini de la source HTML pour la page que vous avez saisie.
Maintenant, sauvegardons ce fichier sur un disque dur local sur l'instance Alibaba Cloud ECS. Pour ce faire, vous devez d'abord ouvrir le fichier en mode écriture.
Pour ce faire, passez la chaîne «w» comme deuxième argument de la méthode open ().
####### 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()
Dans le bloc de code ci-dessus, un fichier avec le nom concaténé avec "_scrapped.txt" est créé dans l'URL saisie précédemment et une variable à ouvrir est créée. Le premier argument de la méthode open est le nom de fichier sur le disque local. "HTTPS: //" et "HTTP: //" ont été supprimés du nom de fichier. Si vous ne le supprimez pas, le nom du fichier sera invalide. Le deuxième argument est l'autorisation d'écriture dans ce cas.
Passez ensuite la variable "pretty_source" comme argument à la méthode .write et écrivez dans la variable "local_file". Utilisez des lignes commentées si vous devez encoder le texte en UTF-8 pour l'imprimer correctement dans un fichier local. Fermez ensuite le fichier texte local.
Exécutons le code et voyons ce qui se passe.
python3.6 bot.py
Il vous sera demandé de saisir l'URL que vous souhaitez supprimer. Essayons https://www.wikipedia.org. Le code source correctement formaté d'un site Web particulier est maintenant enregistré sous forme de fichier .txt dans votre répertoire de travail local.
Le code final de ce projet ressemble à ceci:
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()
Vous avez appris à utiliser Beautiful Soup 4 pour créer un "bot" de scraping web headless de base en Python sur une instance Alibaba Cloud Elastic Compute Service (ECS) avec CentOS 7. J'ai utilisé Requests pour obtenir le code source d'une page Web particulière, utilisé Beautiful soup 4 pour analyser les données et finalement enregistré le code source de la page Web récupérée dans un fichier texte local sur l'instance. Vous pouvez utiliser le module Beautiful soup 4 pour mettre en forme le texte pour une lisibilité humaine.
Recommended Posts