beautifulsoup #beautifulso up Table des matières À propos 1 Chapitre 1: Commenc
beautifulsoup #beautifulso up Table des matières À propos 1 Chapitre 1: Commencer avec beautifulsoup 2 Remarques 2 Versions 3 Examples 3 Installation ou configuration 3 Un exemple de grattage BeautifulSoup "Hello World" 3 Chapitre 2: Éléments de localisation 6 Examples 6 Localiser un texte après un élément dans BeautifulSoup 6 Utilisation de sélecteurs CSS pour localiser des éléments dans BeautifulSoup 6 Localisation des commentaires 7 Fonctions de filtrage 7 Utilisation de base 7 Fournir des arguments supplémentaires pour filtrer les fonctions 8 Accès aux balises internes et à leurs attributs de la balise initialement sélectionnée 8 Collecter des éléments facultatifs et / ou leurs attributs à partir de séries de pages 9 Crédits 11 À propos You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: beautifulsoup It is an unofficial and free beautifulsoup ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official beautifulsoup. The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners. Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to info@zzzprojects.com https://riptutorial.com/fr/home 1 Chapitre 1: Commencer avec beautifulsoup Remarques Dans cette section, nous discutons de ce qu'est Beautiful Soup, de son utilisation et d'un bref aperçu de son utilisation. Beautiful Soup est une bibliothèque Python qui utilise votre analyseur html / xml pré-installé et convertit la page Web / html / xml en une arborescence composée de balises, d’éléments, d’attributs et de valeurs. Pour être plus précis, l’arbre est constitué de quatre types d’objets, Tag, NavigableString, BeautifulSoup et Comment. Cet arbre peut ensuite être "interrogé" en utilisant les méthodes / propriétés de l'objet BeautifulSoup créé à partir de la bibliothèque de l'analyseur. Votre besoin: vous avez souvent l'un des besoins suivants: Vous souhaiterez peut-être analyser une page Web pour déterminer le nombre de balises trouvées, le nombre d'éléments de chaque balise détectés et leurs valeurs. Vous voudrez peut-être les changer. 1. Vous souhaiterez peut-être déterminer les noms et les valeurs des éléments afin de pouvoir les utiliser conjointement avec d'autres bibliothèques pour l'automatisation de pages Web, telles que Selenium . 2. Vous pouvez souhaiter transférer / extraire des données affichées dans une page Web vers d'autres formats, tels qu'un fichier CSV ou une base de données relationnelle telle que SQLite ou mysql. Dans ce cas, la bibliothèque vous aide dans la première étape, à comprendre la structure de la page Web, bien que vous utilisiez d'autres bibliothèques pour effectuer l'acte de transfert. 3. Vous voudrez peut-être savoir combien d’éléments sont stylés avec un certain style CSS et lesquels. 4. Séquence d'utilisation basique typique dans votre code Python: Importer la bibliothèque Beautiful Soup 1. Ouvrez une page Web ou un texte HTML avec la bibliothèque BeautifulSoup en mentionnant quel analyseur utiliser. Le résultat de cette étape est un objet BeautifulSoup. (Remarque: ce nom d’analyseur mentionné doit être déjà installé dans le cadre de vos processus Python. Par exemple, html.parser est un package intégré avec piles fourni avec Python. Vous pouvez installer d’autres analyseurs tels que lxml ou html5lib .) 2. "Requête" ou recherchez l'objet BeautifulSoup en utilisant la syntaxe 'object.method' et obtenez le résultat dans une collection, telle qu'un dictionnaire Python. Pour certaines méthodes, la sortie sera une valeur simple. 3. Utilisez le résultat de l'étape précédente pour faire ce que vous voulez en faire, en restant 4. https://riptutorial.com/fr/home 2 dans votre code Python. Vous pouvez également modifier les valeurs d'élément ou les valeurs d'attribut dans l'objet d'arborescence. Les modifications n'affectent pas la source du code html, mais vous pouvez appeler des méthodes de formatage de sortie (telles que prettify ) pour créer une nouvelle sortie à partir de l'objet BeautifulSoup. Méthodes couramment utilisées: Généralement, les méthodes .find et .find_all sont utilisées pour rechercher l'arborescence, en donnant les arguments d'entrée. Les arguments d'entrée sont les suivants: le nom de la balise recherchée, les noms des attributs et d'autres arguments connexes. Ces arguments peuvent être présentés comme suit: une chaîne, une expression régulière, une liste ou même une fonction. Les utilisations courantes de l'objet BeautifulSoup incluent: Recherche par classe CSS 1. Recherche par adresse de lien hypertexte 2. Recherche par identifiant d'élément, tag 3. Recherche par nom d'attribut. Valeur d'attribut. 4. Si vous avez besoin de filtrer l'arborescence avec une combinaison des critères ci-dessus, vous pouvez également écrire une fonction qui a la valeur true ou false et rechercher par cette fonction. Versions Version Remarques Nom du paquet Date de sortie 3.x Version 3.2.1; Python 2 seulement beautifulsoup 2012-02-16 4.x Version 4.5.0; Python 2 et 3 beautifulsoup4 2016-07-20 Examples Installation ou configuration pip peut être utilisé pour installer BeautifulSoup. Pour installer la version 4 de BeautifulSoup, exécutez la commande: pip install beautifulsoup4 Sachez que le nom du package est beautifulsoup4 au lieu de beautifulsoup , ce dernier nom signifie ancienne version, voir ancien beautifulsoup Un exemple de grattage BeautifulSoup "Hello World" from bs4 import BeautifulSoup import requests https://riptutorial.com/fr/home 3 main_url = "https://fr.wikipedia.org/wiki/Hello_world" req = requests.get(main_url) soup = BeautifulSoup(req.text, "html.parser") # Finding the main title tag. title = soup.find("h1", class_ = "firstHeading") print title.get_text() # Finding the mid-titles tags and storing them in a list. mid_titles = [tag.get_text() for tag in soup.find_all("span", class_ = "mw-headline")] # Now using css selectors to retrieve the article shortcut links links_tags = soup.select("li.toclevel-1") for tag in links_tags: print tag.a.get("href") # Retrieving the side page links by "blocks" and storing them in a dictionary side_page_blocks = soup.find("div", id = "mw-panel").find_all("div", class_ = "portal") blocks_links = {} for num, block in enumerate(side_page_blocks): blocks_links[num] = [link.get("href") for link in block.find_all("a", href = True)] print blocks_links[0] Sortie: "Hello, World!" program #Purpose #History #Variations #See_also #References #External_links [u'/wiki/Main_Page', u'/wiki/Portal:Contents', u'/wiki/Portal:Featured_content', u'/wiki/Portal:Current_events', u'/wiki/Special:Random', u'https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&u u'//shop.wikimedia.org'] Entrer votre analyseur préféré lors de l'instanciation de Beautiful Soup évite l' Warning habituel déclarant no parser was explicitely specified . Différentes méthodes peuvent être utilisées pour trouver un élément dans l'arborescence de la page Web. Bien qu'il existe quelques autres méthodes, les CSS classes et les CSS selectors sont deux moyens pratiques de rechercher des éléments dans l'arborescence. Il convient de noter que nous pouvons rechercher des balises en définissant leur valeur d'attribut sur True lors de la recherche. get_text() nous permet de récupérer du texte contenu dans une balise. Il le renvoie sous la forme d'une chaîne Unicode unique. tag.get("attribute") permet d'obtenir la valeur d'un attribut de tag. Lire Commencer avec beautifulsoup en ligne: https://riptutorial.com/fr/home 4 https://riptutorial.com/fr/beautifulsoup/topic/1817/commencer-avec-beautifulsoup https://riptutorial.com/fr/home 5 Chapitre 2: Éléments de localisation Examples Localiser un texte après un élément dans BeautifulSoup Imaginez que vous avez le code HTML suivant: <div> <label>Name:</label> John Smith </div> Et vous devez localiser le texte "John Smith" après l'élément label . Dans ce cas, vous pouvez localiser l'élément label par texte, puis utiliser la propriété .next_sibling : from bs4 import BeautifulSoup data = """ <div> <label>Name:</label> John Smith </div> """ soup = BeautifulSoup(data, "html.parser") label = soup.find("label", text="Name:") print(label.next_sibling.strip()) Imprime John Smith . Utilisation de sélecteurs CSS pour localiser des éléments dans BeautifulSoup BeautifulSoup a un support limité pour les sélecteurs CSS , mais couvre les plus couramment utilisés. Utilisez la méthode select() pour rechercher plusieurs éléments et select_one() pour rechercher un seul élément. Exemple de base: from bs4 import BeautifulSoup data = """ <ul> <li class="item">item1</li> <li class="item">item2</li> <li class="item">item3</li> </ul> """ https://riptutorial.com/fr/home 6 soup = BeautifulSoup(data, "html.parser") for item in soup.select("li.item"): print(item.get_text()) Impressions: item1 item2 item3 Localisation des commentaires Pour localiser les commentaires dans BeautifulSoup , utilisez l'argument text (ou string dans les versions récentes) vérifiant le type à Comment : from bs4 import BeautifulSoup from bs4 import Comment data = """ <html> <body> <div> <!-- desired text --> </div> </body> </html> """ soup = BeautifulSoup(data, "html.parser") comment = soup.find(text=lambda text: isinstance(text, Comment)) print(comment) Imprime desired text . Fonctions de filtrage BeautifulSoup vous permet de filtrer les résultats en fournissant une fonction à find_all et à des fonctions similaires. Cela peut être utile pour les filtres complexes ainsi que pour un outil de réutilisation du code. Utilisation de base Définir une fonction qui prend un élément comme seul argument. La fonction doit retourner True si l'argument correspond. def has_href(tag): '''Returns True for tags with a href attribute''' return bool(tag.get("href")) https://riptutorial.com/fr/home 7 soup.find_all(has_href) #find all elements with a href attribute #equivilent using lambda: soup.find_all(lambda tag: bool(tag.get("href"))) Un autre exemple qui trouve des balises avec une valeur href qui ne commence pas par Fournir des arguments supplémentaires pour filtrer les fonctions Comme la fonction transmise à find_all ne peut prendre qu'un seul argument, il est parfois utile de créer des "fabriques de fonctions" qui produisent des fonctions pouvant être utilisées dans find_all . Ceci uploads/Litterature/ beautifulsoup-fr.pdf
Documents similaires










-
27
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Nov 27, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.8590MB