<jupyter_start><jupyter_text>Importer des données depuis le web Le web est un domaine riche en sources de données, vous avez forcément entendu parler de web scrapping pour récupérer des données sur le web.Le data scientist peut avoir besoin de récupérer des données sur Internet sans vouloir faire du développement web. Dans cette partie, deux approches seront examinées.Quelle que soit l’approche, Beautiful-Soup est un package central.Il va vous permettre de récupérer n’importe quel contenu HTML d’une page web et d’extraire de l’information de ce site web.Si par exemple, on désire scrapper un site, on va devoir commencer par inspecter le code html lié à ce site. Si on désire récupérer tous les noms de package d’un article sur les packages Python pour la data science, on va devoir identifier la balise liée à ces noms et ensuite on pourra commencer à travailler en Python.En inspectant le code html, on trouve ce code :<jupyter_code><div class="x-accordion-heading"><a id="tab-5b02e7bbbe1a3" class="xaccordion-
toggle collapsed" role="tab" data-x-toggle="collapse-b"
data-x-toggleable="5b02e7bbbe1a3" data-x-toggle-group="5b02e7bbbe08d"
aria-selected="false" aria-expanded="false" aria-controls="panel-
5b02e7bbbe1a3">Jupyter Notebook, une interface plus intuitive</a></
div><jupyter_output><empty_output><jupyter_text>Il semble que la balise de division div de ce que l’on cherche se nomme *x-accordion-heading*. On va donc utiliser Python pour récupérer le contenu de la page :<jupyter_code>from requests import get
url = 'https://www.stat4decision.com/fr/packages-python-data-science/'
reponse = get(url)
print(reponse.text[:50])<jupyter_output><!DOCTYPE html>

<html class="no-js" lang="fr-F<jupyter_text>L'objet reponse que l’on a créé est un objet requests.models.Response.On va ensuite extraire de cette page les balises div du type recherché :<jupyter_code># on importe BeautifulSoup
from bs4 import BeautifulSoup
# on crée un objet en utlisant le parser Python
html_soup = BeautifulSoup(reponse.text, 'html.parser')
# on recherche la div qui nous intéresse
noms_packages = html_soup.find_all('div', class_='x-accordion-heading')<jupyter_output><empty_output><jupyter_text>Dans noms_packages, on a tout ce qui se trouve dans le titre de chaque division.Nous allons maintenant extraire de cet élément les noms des packages qui se trouvent au début de chaque titre :<jupyter_code># on fait une boucle sur les éléments de l’objet créé
for div_nom in noms_packages :
    # on affiche avec une majuscule en première lettre les
    # premiers mots avant une virgule
    print(div_nom.text.split(",")[0].capitalize())<jupyter_output>Jupyter notebook
Numpy
Scipy
Pandas
Statsmodels
Scikit-learn
Matplotlib
Bokeh
Seaborn
Keras
{'fraction_non_alphanumeric': 0.0739114526161727, 'fraction_numerical': 0.010611050128064398, 'mean_word_length': 5.684596577017115, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 20, 'https://': 1, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '273271', 'license': 'MIT', 'n_tokens_mistral': 907, 'n_tokens_neox': 910, 'n_words': 332, 'path': '08c_scrapping_web.ipynb', 'repo_name': 'stat4decision/python-data-lbp-fev20', 'size': '2733'}