Modules Python pour le Web Scraping
Dans ce chapitre, apprenons divers modules Python que nous pouvons utiliser pour le web scraping.
Environnements de développement Python utilisant virtualenv
Virtualenv est un outil pour créer des environnements Python isolés. Avec l'aide de virtualenv, nous pouvons créer un dossier contenant tous les exécutables nécessaires pour utiliser les packages requis par notre projet Python. Cela nous permet également d'ajouter et de modifier des modules Python sans accéder à l'installation globale.
Vous pouvez utiliser la commande suivante pour installer virtualenv -
(base) D:\ProgramData>pip install virtualenv
Collecting virtualenv
Downloading
https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c3
5d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl
(1.9MB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 1.9MB 86kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0
Maintenant, nous devons créer un répertoire qui représentera le projet à l'aide de la commande suivante -
(base) D:\ProgramData>mkdir webscrap
Maintenant, entrez dans ce répertoire à l'aide de cette commande suivante -
(base) D:\ProgramData>cd webscrap
Maintenant, nous devons initialiser le dossier d'environnement virtuel de notre choix comme suit -
(base) D:\ProgramData\webscrap>virtualenv websc
Using base prefix 'd:\\programdata'
New python executable in D:\ProgramData\webscrap\websc\Scripts\python.exe
Installing setuptools, pip, wheel...done.
Maintenant, activez l'environnement virtuel avec la commande donnée ci-dessous. Une fois activé avec succès, vous verrez le nom de celui-ci sur le côté gauche entre parenthèses.
(base) D:\ProgramData\webscrap>websc\scripts\activate
Nous pouvons installer n'importe quel module dans cet environnement comme suit -
(websc) (base) D:\ProgramData\webscrap>pip install requests
Collecting requests
Downloading
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (9
1kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 148kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Downloading
https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca
55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133
kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 369kB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading
https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee6364
4d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl
(147kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 153kB 527kB/s
Collecting urllib3<1.24,>=1.21.1 (from requests)
Downloading
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133k
B)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 517kB/s
Collecting idna<2.8,>=2.5 (from requests)
Downloading
https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746
a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 61kB 339kB/s
Installing collected packages: chardet, certifi, urllib3, idna, requests
Successfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1
urllib3-1.23
Pour désactiver l'environnement virtuel, nous pouvons utiliser la commande suivante -
(websc) (base) D:\ProgramData\webscrap>deactivate
(base) D:\ProgramData\webscrap>
Vous pouvez voir que (websc) a été désactivé.
Modules Python pour le Web Scraping
Le scraping Web est le processus de construction d'un agent capable d'extraire, d'analyser, de télécharger et d'organiser automatiquement des informations utiles du Web. En d'autres termes, au lieu de sauvegarder manuellement les données des sites Web, le logiciel de scraping Web chargera et extraira automatiquement les données de plusieurs sites Web selon nos exigences.
Dans cette section, nous allons discuter des bibliothèques Python utiles pour le scraping Web.
Demandes
Il s'agit d'une simple bibliothèque de scraping Web Python. Il s'agit d'une bibliothèque HTTP efficace utilisée pour accéder aux pages Web. Avec l'aide deRequests, nous pouvons obtenir le HTML brut des pages Web qui peuvent ensuite être analysés pour récupérer les données. Avant d'utiliserrequests, laissez-nous comprendre son installation.
Installation des demandes
Nous pouvons l'installer soit sur notre environnement virtuel, soit sur l'installation globale. Avec l'aide depip commande, nous pouvons facilement l'installer comme suit -
(base) D:\ProgramData> pip install requests
Collecting requests
Using cached
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl
Requirement already satisfied: idna<2.8,>=2.5 in d:\programdata\lib\sitepackages
(from requests) (2.6)
Requirement already satisfied: urllib3<1.24,>=1.21.1 in
d:\programdata\lib\site-packages (from requests) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in d:\programdata\lib\sitepackages
(from requests) (2018.1.18)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in
d:\programdata\lib\site-packages (from requests) (3.0.4)
Installing collected packages: requests
Successfully installed requests-2.19.1
Exemple
Dans cet exemple, nous effectuons une requête GET HTTP pour une page Web. Pour cela, nous devons d'abord importer la bibliothèque de requêtes comme suit -
In [1]: import requests
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.
In [2]: r = requests.get('https://authoraditiagarwal.com/')
Nous pouvons maintenant récupérer le contenu en utilisant .text propriété comme suit -
In [5]: r.text[:200]
Observez que dans la sortie suivante, nous avons obtenu les 200 premiers caractères.
Out[5]: '<!DOCTYPE html>\n<html lang="en-US"\n\titemscope
\n\titemtype="http://schema.org/WebSite" \n\tprefix="og: http://ogp.me/ns#"
>\n<head>\n\t<meta charset
="UTF-8" />\n\t<meta http-equiv="X-UA-Compatible" content="IE'
Urllib3
C'est une autre bibliothèque Python qui peut être utilisée pour récupérer des données à partir d'URL similaires au requestsbibliothèque. Vous pouvez en savoir plus à ce sujet dans sa documentation technique à l'adresse https://urllib3.readthedocs.io/en/latest/.
Installation d'Urllib3
En utilisant le pip commande, nous pouvons installer urllib3 soit dans notre environnement virtuel, soit en installation globale.
(base) D:\ProgramData>pip install urllib3
Collecting urllib3
Using cached
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl
Installing collected packages: urllib3
Successfully installed urllib3-1.23
Exemple: Scraping avec Urllib3 et BeautifulSoup
Dans l'exemple suivant, nous grattons la page Web en utilisant Urllib3 et BeautifulSoup. Nous utilisonsUrllib3à la place de la bibliothèque de requêtes pour obtenir les données brutes (HTML) à partir de la page Web. Ensuite, nous utilisonsBeautifulSoup pour analyser ces données HTML.
import urllib3
from bs4 import BeautifulSoup
http = urllib3.PoolManager()
r = http.request('GET', 'https://authoraditiagarwal.com')
soup = BeautifulSoup(r.data, 'lxml')
print (soup.title)
print (soup.title.text)
C'est la sortie que vous observerez lorsque vous exécuterez ce code -
<title>Learn and Grow with Aditi Agarwal</title>
Learn and Grow with Aditi Agarwal
Sélénium
Il s'agit d'une suite de tests automatisés open source pour les applications Web sur différents navigateurs et plates-formes. Ce n'est pas un outil unique mais une suite de logiciels. Nous avons des liaisons au sélénium pour Python, Java, C #, Ruby et JavaScript. Ici, nous allons effectuer un scraping Web en utilisant le sélénium et ses liaisons Python. Vous pouvez en savoir plus sur Selenium avec Java sur le lien Selenium .
Les liaisons Selenium Python fournissent une API pratique pour accéder à Selenium WebDrivers comme Firefox, IE, Chrome, Remote, etc. Les versions actuelles de Python prises en charge sont 2.7, 3.5 et plus.
Installation de sélénium
En utilisant le pip commande, nous pouvons installer urllib3 soit dans notre environnement virtuel, soit en installation globale.
pip install selenium
Comme le sélénium nécessite un pilote pour s'interfacer avec le navigateur choisi, nous devons le télécharger. Le tableau suivant montre différents navigateurs et leurs liens pour les télécharger.
Chrome |
https://sites.google.com/a/chromium.org/ |
Edge |
https://developer.microsoft.com/ |
Firefox |
https://github.com/ |
Safari |
https://webkit.org/ |
Exemple
Cet exemple montre le scraping Web à l'aide de sélénium. Il peut également être utilisé pour des tests appelés tests de sélénium.
Après avoir téléchargé le pilote particulier pour la version spécifiée du navigateur, nous devons faire de la programmation en Python.
Tout d'abord, vous devez importer webdriver à partir du sélénium comme suit -
from selenium import webdriver
Maintenant, fournissez le chemin du pilote Web que nous avons téléchargé selon nos besoins -
path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)
Maintenant, fournissez l'url que nous voulons ouvrir dans ce navigateur Web maintenant contrôlé par notre script Python.
browser.get('https://authoraditiagarwal.com/leadershipmanagement')
Nous pouvons également gratter un élément particulier en fournissant le xpath tel que fourni dans lxml.
browser.find_element_by_xpath('/html/body').click()
Vous pouvez vérifier le navigateur, contrôlé par le script Python, pour la sortie.
Scrapy
Scrapy est un framework d'exploration Web rapide et open-source écrit en Python, utilisé pour extraire les données de la page Web à l'aide de sélecteurs basés sur XPath. Scrapy a été publié pour la première fois le 26 juin 2008 sous licence BSD, avec un jalon 1.0 publié en juin 2015. Il nous fournit tous les outils dont nous avons besoin pour extraire, traiter et structurer les données des sites Web.
Installation de Scrapy
En utilisant le pip commande, nous pouvons installer urllib3 soit dans notre environnement virtuel, soit en installation globale.
pip install scrapy
Pour une étude plus détaillée de Scrapy vous pouvez aller sur le lien Scrapy