Débuter avec le webscraping
Sur cette page
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 “
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