Minimiser la bande passante
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte00:00:00 :Dans cette partie on va terminer la logique principale de notre script en rajoutant unepetite modification qui va nous permettre de ne pas charger les images, notamment dansle cas de l'utilisation avec le scrapping browser de Bright Data puisque forcémentquand vous utilisez ce genre de service ça coûte de l'argent et ce qui va vous faire
00:00:16 :dépenser plus ou moins d'argent c'est le nombre de données qui vont être envoyées.Donc le problème c'est que les images notamment ça consomme pas mal de bandes passantes alorsqu'on n'en a pas vraiment besoin.
00:00:26 :Bien sûr ça dépend de votre cas de figure, si vous voulez récupérer les images deslocations sur Airbnb ne faites pas ça puisque vous allez les bloquer avant qu'elles arriventvers vous.
00:00:35 :Dans notre cas on veut juste récupérer le prix donc des informations de texte et onn'a pas besoin des images.On va donc rajouter dans notre script une fonction qui va intercepter les requêteset annuler les requêtes qui vont être de type images.
00:00:46 :Donc là encore c'est une technique que vous retrouvez dans la documentation de BrightData, on voit ici du code avec Playwright.Dans ce cas-ci il n'est pas en Python, il est en JavaScript mais on va voir que c'estassez simple de le convertir dans le contexte de l'utilisation de Playwright avec Python.
00:01:00 :Donc je vais retourner dans mon script et on va coller ce code que vous retrouverezdans les sources de l'information.Donc ce que va faire cette fonction c'est tout simplement vérifier pour chaque requêtele type de la ressource qui est associée à la requête.
00:01:12 :Donc si on a une requête de type images on va faire un route.abort donc une annulationde cette requête et sinon on va continuer avec le chemin.
00:01:21 :Et on va donc apporter des modifications à notre fonction run ici pour modifier la routepar défaut de nos requêtes.Donc pour ça on va faire page.route comme ceci et on va dire qu'on souhaite cibler
00:01:31 :toutes les requêtes.Pour ça on met deux astérisques, un slash et une autre astérisque, ça ça va signifierqu'on souhaite intercepter toutes les requêtes qui vont passer à travers notre page et onva ensuite donner en deuxième argument la fonction qu'on souhaite appeler à chaquefois qu'on va effectuer une requête.
00:01:45 :Donc c'est à dire que pour toutes les requêtes de notre page on va passer par cette fonctionet si on a une requête de type images avec le ressource type ici qui est égal à imageset bien on va annuler cette requête.
00:01:55 :Donc on va pouvoir voir très concrètement ce que ça donne, on n'est même pas obligédans ce cas-ci de passer par bright data, on peut voir également avec playwright enlocal, donc là je vais aller à la fin de mon script, je vais mettre bright data àfalse et on va mettre le headless à false également pour qu'on puisse voir quelque
00:02:09 :chose.Donc je vais mettre un point de debug par exemple ici avant qu'on passe à la navigationavec les différentes pages donc je mets un point de debug ici, je lance le script etlà vous allez voir qu'on va ouvrir la page et que cette fois-ci on n'a aucune des images
00:02:22 :qui n'est chargée, on a juste l'image de google maps ici puisque ce n'est pas uneimage fixe ici, on a des données un peu plus complexes mais vous voyez que toutes les imagessur le reste du site ou quasiment, on a le logo ici qui doit être probablement autre
00:02:35 :chose peut-être du vectoriel mais toutes les images ici sont bien bloquées et doncça va grandement limiter la bande passante et accélérer le scrapping et aussi réduirevotre facture lorsque vous passerez par le scrapping browser de bright data.
00:02:49 :Donc voilà pour cette dernière modification, une autre chose que vous pouvez faire égalementque je vous conseille c'est de modifier le timeout par défaut, là encore on peut lefaire directement au niveau de notre script, pour ça il faut créer un nouveau contextedonc on peut faire browser.newcontext et sur ce contexte on peut changer le timeout donc
00:03:07 :en faisant context.setdefault alors il faut que je le récupère par contre avant dansune variable bien entendu donc contexte ici et on va faire context.setdefaulttimeout
00:03:17 :comme ceci.Par défaut si je ne me trompe pas le timeout est de 30 secondes, si vous êtes dans unendroit où il y a une connexion qui est assez lente et bien je vous conseille d'augmentercette valeur, vous pouvez passer par exemple à 60 000 millisecondes donc 60 secondes,
00:03:30 :ça va permettre de ne pas retourner une erreur puisque au delà de 30 secondes donc au delàdu timeout par défaut et bien Playwright va considérer que la requête a échouéalors que vous êtes peut-être juste dans une situation où votre réseau n'est pastrès performant et c'est juste que la requête prend du temps à effectuer.
00:03:45 :Donc voilà une dernière chose que vous pouvez faire si vous souhaitez modifier le timeoutet la dernière chose à ne pas oublier bien sûr ici c'est d'utiliser ce nouveau contexteà la place du browser pour créer notre page et ensuite ça ne change rien pour le resteon passe par notre page pour modifier les requêtes sur l'interception ici des images
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.