Débuter avec le webscraping

Web Scraping en Python (avec BeautifulSoup)

Lors de l’exécution de tâches de science des données, il est courant de vouloir utiliser des données trouvées sur Internet. Vous pourrez généralement accéder à ces données via une interface de programmation d’application (API) ou dans d’autres formats. Cependant, il arrive parfois que les données que vous souhaitez ne soient accessibles que dans le cadre d’une page Web. Dans des cas comme celui-ci, une technique appelée web scraping entre en scène. Pour appliquer cette technique pour obtenir des données à partir de pages Web, nous devons avoir des connaissances de base sur la structure des pages Web et les balises utilisées dans le développement de pages Web (c’est-à-dire <html> ,<li>,<div> etc.,). Si vous débutez dans le développement Web, vous pouvez l’apprendre [ici][1].

Donc, pour commencer avec le web scrapping, nous allons utiliser un simple [site Web][2]. Nous utiliserons le module “requests” pour obtenir le contenu de la page Web OU le code source.

import requests
page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html")
print (page.content) ## shows the source code

Nous allons maintenant utiliser le module bs4 pour supprimer le contenu afin d’obtenir les données utiles.

from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')
print(soup.prettify()) ##shows source in html format

Vous pouvez trouver les balises requises à l’aide de l’outil “inspecter l’élément” de votre navigateur. Supposons maintenant que vous souhaitiez obtenir toutes les données stockées avec la balise “

  • ”. Ensuite, vous pouvez les trouver avec le script.

    soup.find_all('li')
    # you can also find all the list items with class='ABC'
    # soup.find_all('p', class_='ABC')
    # OR all elements with class='ABC'
    # soup.find_all(class_="ABC")
    # OR all the elements with class='ABC'
    # soup.find_all(id="XYZ")
    

    Ensuite, vous pouvez obtenir le texte dans la balise en utilisant

    for i in range(len(soup.find_all('li'))):
        print (soup.find_all('li')[i].get_text())
    

    L’ensemble du script est petit et assez simple.

    import requests
    from bs4 import BeautifulSoup
    
    page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html") #get the page
    soup = BeautifulSoup(page.content, 'html.parser') # parse according to html
    soup.find_all('li') #find required tags
    
    for i in range(len(soup.find_all('li'))):
        print (soup.find_all('li')[i].get_text())
    

    [1] : https://www.w3schools.com/ [2] : https://www.york.ac.uk/teaching/cws/wws/webpage1.html