Exemple Beautifulsoup#

Exploration de code Python à l’aide de BeautifulSoup et Requests pour effectuer du web scraping, en particulier pour découvrir les technologies utilisées par un site Web désigné.

Installation#

Installation de Requests

pipenv install requests
pip install requests

Installation de BeautifulSoup

pipenv install beautifulsoup4
pip install beautifulsoup4

Import des bibliothèques dans un fichier Python

import requests
from bs4 import BeautifulSoup

Définir les fonctions#

get_html_content(url) enverra une requête GET à l’URL fournie et renverra le contenu HTML de la page Web.

1def get_html_content(url):
2    try:
3        # Send a GET request to the URL
4        response = requests.get(url)
5        return response.text
6    except Exception as e:
7        print(f"Error occurred while fetching HTML content: {e}")
8        return None

Définir une autre fonction nommée extract_meta_tags(html_content) qui extrait toutes les balises méta du contenu HTML.

 1def extract_meta_tags(html_content):
 2    try:
 3        # Parse the HTML content of the page
 4        soup = BeautifulSoup(html_content, 'html.parser')
 5        # Extracting meta tags for technology detection
 6        meta_tags = soup.find_all('meta')
 7        return meta_tags
 8    except Exception as e:
 9        print(f"Error occurred while extracting meta tags: {e}")
10        return []

Définir une autre fonction nommée extract_script_tags(html_content) pour extraire toutes les balises de script du contenu HTML fourni.

 1def extract_script_tags(html_content):
 2    try:
 3        # Parse the HTML content of the page
 4        soup = BeautifulSoup(html_content, 'html.parser')
 5        # Extracting script tags for JavaScript libraries
 6        script_tags = soup.find_all('script')
 7        return script_tags
 8    except Exception as e:
 9        print(f"Error occurred while extracting script tags: {e}")
10        return []

Nous définirons une fonction nommée extract_technologies_from_meta_tags(meta_tags)pour extraire les technologies mentionnées dans les balises méta fournies.

1def extract_technologies_from_meta_tags(meta_tags):
2    technologies = set()
3    for tag in meta_tags:
4        # Check for technology-related meta tags
5        if 'name' in tag.attrs and 'content' in tag.attrs:
6            if tag['name'].lower() in ['generator', 'framework', 'cms', 'platform']:
7                technologies.add(tag['content'])
8    return technologies

Définirons une autre fonction nommée extract_technologies_from_script_tags(script_tags) pour extraire les technologies des URL de la bibliothèque JavaScript mentionnées dans les balises de script.

 1def extract_technologies_from_script_tags(script_tags):
 2    technologies = set()
 3    for tag in script_tags:
 4        # Check for JavaScript library URLs
 5        if 'src' in tag.attrs:
 6            src = tag['src']
 7            # Extracting library name from URL
 8            if '/' in src:
 9                library = src.split('/')[-1].split('.')[0]
10                technologies.add(library)
11    return technologies

Création d’une fonction nommée get_detected_technologies(url) qui orchestre le processus de détection des technologies utilisées dans un site Web.

 1def get_detected_technologies(url):
 2    html_content = get_html_content(url)
 3    if html_content:
 4        meta_tags = extract_meta_tags(html_content)
 5        script_tags = extract_script_tags(html_content)
 6        technologies_from_meta_tags = extract_technologies_from_meta_tags(meta_tags)
 7        technologies_from_script_tags = extract_technologies_from_script_tags(script_tags)
 8        detected_technologies = technologies_from_meta_tags.union(technologies_from_script_tags)
 9        return detected_technologies
10    else:
11        return None

Bloc principal#

 1if __name__ == "__main__":
 2    website_url = input("Enter the URL of the website: ")
 3    detected_technologies = get_detected_technologies(website_url)
 4
 5    if detected_technologies:
 6        print("Technologies used in the website:")
 7        for tech in detected_technologies:
 8            print(tech)
 9    else:
10        print("Failed to detect technologies.")

Exécution du code#

Après avoir consolidé tous les codes de fonction individuels dans un seul fichier Python, lors de l’exécution du script et de la fourniture d’une entrée URL de site Web, le script affichera les technologies utilisées par le site Web, comme le montre l’image ci-jointe.

Enter the URL of the website: ***********
Technologies used in the website:
dark-mode
fontend-custom
sassy-social-share-public
mpp-frontend
jquery
endless-river
adsbygoogle
WordPress 6.5.2
custom
wdv-about-me-widget-public
navigation
jquery-migrate
slick

Note

Auteur : Laurent Jouron Envoyez moi un e-mail