logo

Tutoriel Python Web Scraping

Le Web scraping, le processus d'extraction de données de sites Web, est devenu une technique puissante pour collecter des informations sur la vaste étendue d'Internet. Dans ce didacticiel, nous explorerons diverses bibliothèques et modules Python couramment utilisés pour le web scraping et expliquerons pourquoi Python 3 est le choix préféré pour cette tâche.

Packages et outils essentiels pour Python Web Scraping

La dernière version de Python , propose un riche ensemble d'outils et de bibliothèques spécialement conçus pour le web scraping, ce qui facilite plus que jamais la récupération efficace et efficiente des données sur le Web.



Table des matières

Module de requêtes

La bibliothèque de requêtes est utilisée pour effectuer des requêtes HTTP vers une URL spécifique et renvoie la réponse. Les requêtes Python fournissent des fonctionnalités intégrées pour gérer à la fois la requête et la réponse.

pip install requests>

Exemple : Faire une demande

Le module de requêtes Python dispose de plusieurs méthodes intégrées pour effectuer des requêtes HTTP vers l'URI spécifié à l'aide de requêtes GET, POST, PUT, PATCH ou HEAD. Une requête HTTP est destinée soit à récupérer des données à partir d'un URI spécifié, soit à transmettre des données à un serveur. Il fonctionne comme un protocole requête-réponse entre un client et un serveur. Ici, nous utiliserons la requête GET. Le Méthode OBTENIR est utilisé pour récupérer des informations sur le serveur donné en utilisant un URI donné. La méthode GET envoie les informations utilisateur codées ajoutées à la demande de page.



Python
import requests # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # print content of request print(r.content)>

Sortir

Requêtes Python faisant une requête GET

Pour plus d'informations, reportez-vous à notre Tutoriel sur les requêtes Python .



Bibliothèque BeautifulSoup

Beautiful Soup fournit quelques méthodes simples et phrases Pythoniques pour guider, rechercher et modifier un arbre d'analyse : une boîte à outils pour étudier un document et supprimer ce dont vous avez besoin. Il ne faut pas beaucoup de code pour documenter une application.

Beautiful Soup convertit automatiquement les enregistrements entrants en Unicode et les formulaires sortants en UTF-8. Vous n’avez pas à penser aux encodages à moins que le document ne définisse pas d’encodage, et Beautiful Soup ne peut pas en attraper un. Il ne vous reste plus qu'à choisir l'encodage d'origine. Beautiful Soup repose sur des analyseurs Python célèbres tels que LXML et HTML, vous permettant d'essayer différentes stratégies d'analyse ou d'échanger la vitesse contre la flexibilité.

pip install beautifulsoup4>

Exemple

  1. Importation de bibliothèques : Le code importe la bibliothèque de requêtes pour effectuer des requêtes HTTP et la classe BeautifulSoup de la bibliothèque bs4 pour analyser le HTML.
  2. Faire une requête GET : Il envoie une requête GET à 'https://www.techcodeview.com
  3. Vérification du code d'état : Il imprime le code d'état de la réponse, généralement 200 en cas de succès.
  4. Analyser le HTML : Le contenu HTML de la réponse est analysé à l'aide de BeautifulSoup et stocké dans la variable soup.
  5. Impression du HTML embelli : Il imprime la version embellie du contenu HTML analysé pour plus de lisibilité et d'analyse.
Python
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())>

Sortir

Python BeautifulSoup Analyse HTML

Recherche d'éléments par classe

Maintenant, nous aimerions extraire quelques données utiles du contenu HTML. L'objet soupe contient toutes les données de la structure imbriquée qui pourraient être extraites par programme. Le site Web que nous voulons supprimer contient beaucoup de texte, alors grattons maintenant tout ce contenu. Tout d’abord, inspectons la page Web que nous voulons gratter.


système opérateur

Dans l'image ci-dessus, nous pouvons voir que tout le contenu de la page se trouve sous le div avec le contenu d'entrée de classe. Nous utiliserons la classe find. Cette classe trouvera la balise donnée avec l'attribut donné. Dans notre cas, il trouvera tous les div ayant une classe comme contenu d'entrée.

On voit que le contenu de la page est sous le

étiqueter. Il faut maintenant retrouver toutes les balises p présentes dans cette classe. Nous pouvons utiliser leTrouver tout classe du BeautifulSoup.

Python
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') s = soup.find('div', class_='entry-content') content = s.find_all('p') print(content)>

Sortir:

find_all bs4

Pour plus d'informations, reportez-vous à notre Python BelleSoup .

Sélénium

Selenium est un module Python populaire utilisé pour automatiser les navigateurs Web. Il permet aux développeurs de contrôler les navigateurs Web par programmation, permettant ainsi des tâches telles que le web scraping, les tests automatisés et l'interaction avec les applications Web. Selenium prend en charge divers navigateurs Web, notamment Chrome, Firefox, Safari et Edge, ce qui en fait un outil polyvalent pour l'automatisation du navigateur.

Exemple 1 : Pour Firefox

Dans cet exemple spécifique, nous dirigeons le navigateur vers la page de recherche Google avec le paramètre de requête geeksforgeeks. Le navigateur chargera cette page et nous pourrons ensuite interagir avec elle par programme à l'aide de Selenium. Cette interaction peut impliquer des tâches telles que l'extraction des résultats de recherche, le clic sur des liens ou la suppression de contenu spécifique de la page.

Python
# import webdriver  from selenium import webdriver # create webdriver object  driver = webdriver.Firefox() # get google.co.in  driver.get('https://google.co.in / search?q = geeksforgeeks')>

Sortir

pour-firefox

javafx

Exemple 2 : pour Chrome

  1. Nous importons le module webdriver depuis la bibliothèque Selenium.
  2. Nous spécifions le chemin d'accès à l'exécutable du pilote Web. Vous devez télécharger le pilote approprié pour votre navigateur et indiquer le chemin d'accès. Dans cet exemple, nous utilisons le pilote Chrome.
  3. Nous créons une nouvelle instance du navigateur Web à l'aide de webdriver.Chrome() et transmettons le chemin d'accès à l'exécutable du pilote Chrome comme argument.
  4. Nous accédons à une page Web en appelant la méthode get() sur l'objet navigateur et en transmettant l'URL de la page Web.
  5. Nous extrayons les informations de la page Web en utilisant diverses méthodes fournies par Selenium. Dans cet exemple, nous récupérons le titre de la page en utilisant l'attribut title de l'objet navigateur.
  6. Enfin, nous fermons le navigateur en utilisant la méthode quit().
Python
# importing necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager # for holding the resultant list element_list = [] for page in range(1, 3, 1): page_url = 'https://webscraper.io/test-sites/e-commerce/static/computers/laptops?page=' + str(page) driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(page_url) title = driver.find_elements(By.CLASS_NAME, 'title') price = driver.find_elements(By.CLASS_NAME, 'price') description = driver.find_elements(By.CLASS_NAME, 'description') rating = driver.find_elements(By.CLASS_NAME, 'ratings') for i in range(len(title)): element_list.append([title[i].text, price[i].text, description[i].text, rating[i].text]) print(element_list) #closing the driver driver.close()>

Sortir

Pour plus d'informations, reportez-vous à notre Python Sélénium .

Lxml

Le module lxml en Python est une bibliothèque puissante pour traiter les documents XML et HTML. Il fournit des capacités d'analyse XML et HTML hautes performances ainsi qu'une API simple et Pythonique. lxml est largement utilisé dans le web scraping Python en raison de sa vitesse, de sa flexibilité et de sa facilité d'utilisation.

pip install lxml>

Exemple

Voici un exemple simple montrant comment utiliser le module lxml pour le web scraping Python :

  1. Nous importons le module html de lxml avec le module de requêtes pour l'envoi de requêtes HTTP.
  2. Nous définissons l'URL du site Web que nous souhaitons gratter.
  3. Nous envoyons une requête HTTP GET au site Web à l'aide de la fonction request.get() et récupérons le contenu HTML de la page.
  4. Nous analysons le contenu HTML à l'aide de la fonction html.fromstring() de lxml, qui renvoie une arborescence d'éléments HTML.
  5. Nous utilisons des expressions XPath pour extraire des éléments spécifiques de l'arborescence HTML. Dans ce cas, nous extrayons le contenu textuel de tous les (ancrer) des éléments sur la page.
  6. Nous parcourons les titres des liens extraits et les imprimons.
Python
from lxml import html import requests # Define the URL of the website to scrape url = 'https://example.com' # Send an HTTP request to the website and retrieve the HTML content response = requests.get(url) # Parse the HTML content using lxml tree = html.fromstring(response.content) # Extract specific elements from the HTML tree using XPath # For example, let's extract the titles of all the links on the page link_titles = tree.xpath('//a/text()') # Print the extracted link titles for title in link_titles: print(title)>

Sortir

More information...>

Module Urllib

Le module urllib en Python est une bibliothèque intégrée qui fournit des fonctions permettant de travailler avec des URL. Il vous permet d'interagir avec des pages Web en récupérant des URL (Uniform Resource Locators), en ouvrant et en lisant leurs données et en effectuant d'autres tâches liées aux URL telles que l'encodage et l'analyse. Urllib est un package qui rassemble plusieurs modules pour travailler avec des URL, tels que :

  • urllib.request pour l'ouverture et la lecture.
  • urllib.parse pour analyser les URL
  • urllib.error pour les exceptions levées
  • urllib.robotparser pour analyser les fichiers robot.txt

Si urllib n'est pas présent dans votre environnement, exécutez le code ci-dessous pour l'installer.

pip install urllib3>

Exemple

Voici un exemple simple montrant comment utiliser le module urllib pour récupérer le contenu d'une page Web :

  1. Nous définissons l'URL de la page Web que nous voulons récupérer.
  2. Nous utilisons la fonction urllib.request.urlopen() pour ouvrir l'URL et obtenir un objet de réponse.
  3. Nous lisons le contenu de l'objet de réponse à l'aide de la méthode read().
  4. Puisque le contenu est renvoyé sous forme d'octets, nous le décodons en une chaîne à l'aide de la méthode decode() avec l'encodage « utf-8 ».
  5. Enfin, nous imprimons le contenu HTML de la page Web.
Python
import urllib.request # URL of the web page to fetch url = 'https://www.example.com' try: # Open the URL and read its content response = urllib.request.urlopen(url) # Read the content of the response data = response.read() # Decode the data (if it's in bytes) to a string html_content = data.decode('utf-8') # Print the HTML content of the web page print(html_content) except Exception as e: print('Error fetching URL:', e)>

Sortir

euh

PyautoGUI

Le module pyautogui en Python est une bibliothèque d'automatisation d'interface graphique multiplateforme qui permet aux développeurs de contrôler la souris et le clavier pour automatiser les tâches. Bien qu'il ne soit pas spécifiquement conçu pour le web scraping, il peut être utilisé conjointement avec d'autres bibliothèques de web scraping comme Selenium pour interagir avec des pages Web qui nécessitent la saisie de l'utilisateur ou simuler des actions humaines.

pip3 install pyautogui>

Exemple

Dans cet exemple, pyautogui est utilisé pour effectuer le défilement et prendre une capture d'écran de la page de résultats de recherche obtenue en tapant une requête dans le champ de saisie de la recherche et en cliquant sur le bouton de recherche à l'aide de Selenium.

Python
import pyautogui # moves to (519,1060) in 1 sec pyautogui.moveTo(519, 1060, duration = 1) # simulates a click at the present  # mouse position  pyautogui.click() # moves to (1717,352) in 1 sec pyautogui.moveTo(1717, 352, duration = 1) # simulates a click at the present  # mouse position pyautogui.click()>

Sortir

Calendrier

Le module de planification en Python est une bibliothèque simple qui vous permet de planifier l'exécution de fonctions Python à des intervalles spécifiés. Il est particulièrement utile dans le web scraping en Python lorsque vous devez régulièrement extraire les données d'un site Web à des intervalles prédéfinis, par exemple toutes les heures, tous les jours ou toutes les semaines.

Exemple

  • Nous importons les modules nécessaires : planning, heure, requêtes et BeautifulSoup depuis le package bs4.
  • Nous définissons une fonction scrape_data() qui effectue la tâche de web scraping. Dans cette fonction, nous envoyons une requête GET à un site Web (remplacez « https://example.com » par l'URL du site Web que vous souhaitez gratter), analysons le contenu HTML à l'aide de BeautifulSoup, extrayons les données souhaitées et l'imprimons. .
  • Nous planifions la fonction scrape_data() pour qu'elle s'exécute toutes les heures en utilisant planning.every().hour.do(scrape_data).
  • Nous entrons dans une boucle principale qui vérifie en permanence les tâches planifiées en attente à l'aide de planning.run_ending() et dort pendant 1 seconde entre les itérations pour éviter que la boucle ne consomme trop de CPU.
Python
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)>

Sortir

Pourquoi Python3 pour le Web Scraping ?

La popularité de Python pour le web scraping provient de plusieurs facteurs :

  1. Facilité d'utilisation : La syntaxe claire et lisible de Python facilite la compréhension et l'écriture du code, même pour les débutants. Cette simplicité accélère le processus de développement et réduit la courbe d'apprentissage des tâches de web scraping.
  2. Un écosystème riche : Python dispose d'un vaste écosystème de bibliothèques et de frameworks adaptés au web scraping. Des bibliothèques comme BeautifulSoup, Scrapy et Requests simplifient le processus d'analyse HTML, rendant l'extraction de données un jeu d'enfant.
  3. Polyvalence : Python est un langage polyvalent qui peut être utilisé pour un large éventail de tâches au-delà du web scraping. Sa flexibilité permet aux développeurs d'intégrer le web scraping de manière transparente dans des projets plus vastes, tels que l'analyse de données, l'apprentissage automatique ou le développement Web.
  4. Soutien communautaire : Python dispose d'une communauté vaste et active de développeurs qui contribuent à ses bibliothèques et fournissent une assistance via des forums, des didacticiels et de la documentation. Cette richesse de ressources garantit que les développeurs ont accès à une assistance et à des conseils pour relever les défis du web scraping.