? Voici les possibilités qui s'offrent à vous :","Crunchbase","A propos de nous","Merci à tous pour votre formidable soutien !","Liens rapides","Programme d'affiliation","Prime","ProxyScrape essai premium","Vérificateur de procuration en ligne","Types de mandataires","Pays mandataires","Cas d'utilisation du proxy","Important","Politique en matière de cookies","Clause de non-responsabilité","Politique de confidentialité","Conditions d'utilisation","Médias sociaux","Facebook","LinkedIn","Twitter","Quora","Télégramme","Discord","\n © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belgique | VAT BE 0749 716 760\n"]}
Le web scraping est l'art d'extraire des données de l'internet et de les utiliser à des fins utiles. Il est également connu sous le nom d'extraction de données web ou de récolte de données web. Pour les néophytes, cela revient à copier des données de l'internet et à les stocker localement. Il s'agit toutefois d'un processus manuel. Raclage de sites web
Le web scraping est l'art d'extraire des données de l'internet et de les utiliser à des fins utiles. Il est également connu sous le nom d'extraction de données web ou de récolte de données web. Pour les néophytes, cela revient à copier des données de l'internet et à les stocker localement. Il s'agit toutefois d'un processus manuel. Le web scraping est un processus automatisé qui fonctionne à l'aide de robots d'indexation. Ces derniers se connectent à l'internet à l'aide du protocole HTTP et permettent à l'utilisateur de récupérer des données de manière automatisée. On peut considérer l'internet comme un sol enrichi et les données comme le nouveau pétrole, tandis que le web scraping est la technique qui permet d'extraire ce pétrole.
La capacité de récupérer et d'analyser les données de l'internet est devenue une technique essentielle, que l'on soit un scientifique, un ingénieur ou un spécialiste du marketing. Il existe plusieurs cas d'utilisation dans lesquels le web scraping peut être d'une grande aide. Dans cet article, nous allons récupérer des données d'Amazon en utilisant Python. Enfin, nous analyserons les données scrappées et verrons à quel point elles sont importantes pour une personne normale, un scientifique des données ou une personne gérant un magasin de commerce électronique.
Juste une petite précaution : Si vous êtes novice en matière de Python et de web scraping, cet article risque d'être un peu plus difficile à comprendre. Je vous suggère de lire les articles d'introduction à ProxyScrape puis de lire celui-ci.
Commençons par le code.
Tout d'abord, nous importerons toutes les bibliothèques nécessaires au code. Ces bibliothèques seront utilisées pour le scraping et la visualisation des données. Si vous souhaitez connaître les détails de chacune d'entre elles, vous pouvez consulter leur documentation officielle.
import pandas as pd
import numpy sous np
import matplotlib.pyplot en tant que plt
import seaborn sous sns
%matplotlib en ligne
import re
import time
from datetime import datetime
import matplotlib.dates as mdates
import matplotlib.ticker en tant que ticker
from urllib.request import urlopen
from bs4 import BeautifulSoup
Importation de requêtes
Nous allons maintenant extraire les informations utiles des livres les plus vendus sur Amazon. L'URL que nous allons récupérer est la suivante :
https://www.amazon.in/gp/bestsellers/books/ref=zg_bs_pg_’+str(pageNo)+’?ie=UTF8&pg=’+str(pageNo)
Étant donné que nous devons accéder à toutes les pages, nous allons parcourir chaque page en boucle pour obtenir l'ensemble de données nécessaire.
Pour se connecter à l'URL et récupérer le contenu HTML, les éléments suivants sont nécessaires,
Voici quelques-uns des principaux tags sous lesquels nos données importantes seront stockées,
Si vous inspectez la page donnée, vous verrez la balise parent et ses éléments correspondants.
Si vous souhaitez examiner un attribut particulier, allez à chacun d'entre eux et examinez-les. Vous trouverez des attributs importants pour l'auteur, le nom du livre, la note, le prix, les clients évalués.
Dans notre code, nous utiliserons des instructions if-else imbriquées pour appliquer des conclusions supplémentaires aux auteurs qui ne sont pas enregistrés auprès d'Amazon.
no_pages = 2
def get_data(pageNo):
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0", "Accept-Encoding":"gzip, deflate", "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "DNT":"1","Connection":"close", "Upgrade-Insecure-Requests":"1"}
r = requests.get('https://www.amazon.in/gp/bestsellers/books/ref=zg_bs_pg_'+str(pageNo)+'?ie=UTF8&pg='+str(pageNo), headers=headers)#, proxies=proxies)
content = r.content
soup = BeautifulSoup(content)
#print(soup)
alls = []
for d in soup.findAll('div', attrs={'class':'a-section a-spacing-none aok-relative'}):
#print(d)
name = d.find('span', attrs={'class':'zg-text-center-align'})
n = name.find_all('img', alt=True)
#print(n[0]['alt'])
author = d.find('a', attrs={'class':'a-size-small a-link-child'})
rating = d.find('span', attrs={'class':'a-icon-alt'})
users_rated = d.find('a', attrs={'class':'a-size-small a-link-normal'})
price = d.find('span', attrs={'class':'p13n-sc-price'})
all1=[]
if name is not None:
#print(n[0]['alt'])
all1.append(n[0]['alt'])
else:
all1.append("unknown-product")
if author is not None:
#print(author.text)
all1.append(author.text)
elif author is None:
author = d.find('span', attrs={'class':'a-size-small a-color-base'})
if author is not None:
all1.append(author.text)
else:
all1.append('0')
if rating is not None:
#print(rating.text)
all1.append(rating.text)
else:
all1.append('-1')
if users_rated is not None:
#print(price.text)
all1.append(users_rated.text)
else:
all1.append('0')
if price is not None:
#print(price.text)
all1.append(price.text)
else:
all1.append('0')
alls.append(all1)
return alls
Il remplit les fonctions suivantes,
for i in range(1, no_pages+1) :
results.append(get_data(i))
flatten = lambda l : [item for sublist in l for item in sublist]
df = pd.DataFrame(flatten(results),columns=['Book Name','Author','Rating','Customers_Rated', 'Price'])
df.to_csv('amazon_products.csv', index=False, encoding='utf-8')
Nous allons maintenant charger le fichier csv,
df = pd.read_csv("amazon_products.csv")
df.shape
La forme du cadre de données montre que le fichier CSV comporte 100 lignes et 5 colonnes.
Voyons les 5 lignes de l'ensemble de données,
df.head(61)
Nous allons maintenant effectuer un prétraitement sur les colonnes ratings, customers_rated et price.
df['Note'] = df['Note'].apply(lambda x : x.split()[0])
df["Cote"] = pd.to_numeric(df["Cote"])
df["Prix"] = df["Prix"].str.replace('₹', '')
df["Prix"] = df["Prix"].str.replace(',', '')
df["Prix "] = df["Prix"].apply(lambda x : x.split('.')[0])
df['Prix '] = df['Prix'].astype(int)
df["Clients_Rated"] = df["Clients_Rated"].str.replace(',', '')
df["Clients _Rated"] = pd.to_numeric(df["Clients_Rated"], errors='ignore')
df.head()
Si nous regardons les types de dataframe, nous obtenons,
La sortie ci-dessus contient des informations incomplètes. Nous allons d'abord compter le nombre de NaN, puis les supprimer.
df.replace(str(0), np.nan, inplace=True)
df.replace(0, np.nan, inplace=True)
count_nan = len(df) - df.count()
count_nan
df = df.dropna()
Nous allons maintenant faire connaissance avec tous les auteurs dont le livre est le plus cher. Nous nous familiariserons avec les 20 premiers d'entre eux.
data = data.sort_values(['Rating'],axis=0, ascending=False)[:15]
données
Nous verrons maintenant les livres et les auteurs les mieux notés par rapport à ceux qui sont notés par les clients. Nous filtrons les auteurs et les livres ayant reçu moins de 1 000 évaluations, afin d'obtenir les auteurs les plus célèbres.
data = df[df['Clients_Rated'] > 1000]
data = data.sort_values(['Notation'],axis=0, ascending=False)[:15]
données
Visualisons les livres les mieux notés,
p = figure(x_range=data.iloc[ :,0], plot_width=800, plot_height=600, title="Livres les mieux notés par plus de 1000 clients", toolbar_location=None, tools="")
p.vbar(x=data.iloc[ :,0], top=data.iloc[ :,2], width=0.9)
p.xgrid.grid_line_color = None
p.y_range.start = 0
p.xaxis.major_label_orientation = math.pi/2
show(p)
Plus les évaluations sont nombreuses, plus la confiance des clients est grande. Il sera donc plus convaincant et plus crédible d'ajouter les auteurs et les livres les mieux notés par les clients.
from bokeh.transform import factor_cmap
from bokeh.models import Legend
from bokeh.palettes import Dark2_5 as palette
import itertools
from bokeh.palettes import d3
#colors contient une liste de couleurs qui peuvent être utilisées dans les graphiques
colors = itertools.cycle(palette)
palette = d3['Category20'][20]
index_cmap = factor_cmap('Author', palette=palette,
factors=data["Author"])
p = figure(plot_width=700, plot_height=700, title = "Top Authors : Rating vs. Customers Rated")
p.scatter('Rating','Customers_Rated',source=data,fill_alpha=0.6, fill_color=index_cmap,size=20,legend='Author')
p.xaxis.axis_label = 'RATING'
p.yaxis.axis_label = 'CLIENTS NOTÉS'
p.legend.location = 'top_left'
montrer(p)
Dans cet article, nous avons vu ce qu'est le web scraping en prenant un cas d'utilisation très important d'extraction de données d'Amazon. Nous avons non seulement extrait des données de différentes pages d'Amazon, mais nous avons également visualisé les données à l'aide de différentes bibliothèques Python. Cet article est d'un niveau avancé et peut être difficile à comprendre pour les personnes qui ne connaissent pas le web scraping et la visualisation de données. Pour eux, je suggérerais d'aller voir les articles du pack de démarrage disponibles sur ProxyScrape. Le web scraping est une technique très utile qui peut donner un coup de pouce à votre entreprise. Il existe également des outils payants étonnants disponibles sur le marché, mais pourquoi les payer quand vous pouvez coder votre propre scraper. Le code que nous avons écrit ci-dessus ne fonctionnera peut-être pas pour toutes les pages web, car leur structure peut être différente. Mais si vous avez compris les concepts ci-dessus, alors il n'y a aucun obstacle pour vous de scraper n'importe quelle page web en modifiant le code en fonction de sa structure. J'espère que cet article a été intéressant pour les lecteurs. C'est tout. A bientôt dans les prochains !