Parmi la multitude de moteurs de recherche disponibles aujourd'hui, Yandex est un acteur de premier plan, notamment en Russie et dans les pays voisins. Tout comme Google domine de nombreuses régions du monde, Yandex détient une part de marché importante en Russie, avec des estimations suggérant qu'il capture plus de 50 % du marché des moteurs de recherche dans le pays. Au-delà de la recherche, l'écosystème de Yandex comprend des services, avec plus de 20 produits et services [dont des cartes, des e-mails et un stockage dans le cloud] répondant aux divers besoins des utilisateurs. Selon les dernières statistiques, Yandex traite des milliards de requêtes de recherche chaque mois, ce qui en fait une cible de choix pour ceux qui cherchent à extraire des données de Yandex, que ce soit pour les entreprises, les chercheurs ou les passionnés de données.

Cependant, accéder et analyser manuellement cette richesse de données peut prendre du temps et des efforts. C'est là que le scraping Web Yandex entre en jeu. En utilisant Python et le Base d'exploration Crawling API, nous pouvons automatiser le processus de collecte et d'extraction des résultats de recherche Yandex, fournissant des informations et des points de données précieux qui peuvent guider la prise de décision et la recherche.

Dans ce guide, nous allons nous plonger dans le monde du scraping Web, en nous concentrant spécifiquement sur la façon de scraper les résultats de recherche Yandex. Que vous souhaitiez comprendre la structure de Yandex, configurer votre environnement pour scraper Yandex efficacement ou stocker les données scrapées pour une analyse ultérieure, ce guide couvre tout.

Table des matières

  1. Pourquoi extraire les résultats de recherche Yandex ?
  • Avantages des résultats de recherche Yandex
  • Utilisations pratiques des données Yandex
  1. Comprendre la structure de Yandex
  • Présentation et structure des pages de recherche Yandex
  • Principaux points de données à extraire
  1. Configuration de votre environnement
  • Installation de Python et des bibliothèques requises
  • Choisir le bon IDE de développement
  • Inscription à Crawlbase et jeton API
  1. Récupération et analyse des résultats de recherche
  • Création de l'URL pour le scraping ciblé
  • Effectuer des requêtes HTTP à l'aide de Crawling API
  • Inspection du code HTML pour obtenir des sélecteurs CSS
  • Extraction des détails des résultats de recherche
  • Gestion de la pagination
  1. Stockage des données récupérées
  • Stockage des données récupérées dans un fichier CSV
  • Stockage des données récupérées dans la base de données SQLite
  1. Mot de la fin
  2. FAQ - Foire Aux Questions

Pourquoi extraire les résultats de recherche Yandex ?

Vous obtenez de nombreux résultats lorsque vous saisissez quelque chose dans Yandex et appuyez sur Rechercher. Vous êtes-vous déjà demandé ce que vous pourriez faire de plus avec ces résultats ? C'est là qu'intervient le scraping. Voyons pourquoi le scraping de Yandex peut changer la donne.

Avantages des résultats de recherche Yandex

Avantages des résultats de recherche Yandex
  1. Repérer les tendances: Yandex nous donne un aperçu de ce qui se passe en ligne. Nous pouvons déterminer quels sujets ou produits deviennent populaires en étudiant les modèles de recherche. Par exemple, si de nombreuses personnes recherchent des « vestes d'hiver » en octobre, cela indique que les tendances d'achat d'hiver commencent tôt.
  2. Connaître votre concurrence:Si vous avez une entreprise ou un site Web, vous souhaitez savoir comment vous vous situez par rapport aux autres. En récupérant Yandex, vous pouvez voir quels sites Web apparaissent souvent dans les recherches liées à votre domaine. Cela vous donne un aperçu de ce que les autres font bien et des domaines dans lesquels vous devez peut-être rattraper votre retard.
  3. Création de contenu:Vous êtes blogueur, vlogueur ou écrivain ? Savoir ce que les gens recherchent sur Yandex peut vous guider dans la création de votre contenu. Si les « recettes de biscuits faciles » sont à la mode, il est peut-être temps de partager votre recette de biscuits préférée ou de faire une vidéo à ce sujet.
  4. Dynamisez votre propre site Web: Chaque site Web souhaite apparaître sur la première page de Yandex. Les propriétaires de sites Web peuvent peaufiner leur contenu en comprenant les modèles de recherche et les mots-clés populaires. De cette façon, ils ont de meilleures chances d'apparaître lorsque quelqu'un recherche des sujets connexes.

Utilisations pratiques des données Yandex

  • Comparer les prix:De nombreuses personnes consultent les prix sur différents sites Web avant d'acheter quelque chose. Vous pouvez collecter ces données de prix et prendre des décisions éclairées en grattant Yandex.
  • Recherche et apprentissage:Pour les étudiants, les enseignants ou toute personne curieuse, les données de recherche Yandex peuvent être une mine d'or. Vous pouvez en apprendre davantage sur les intérêts, les préoccupations et les questions des personnes de différentes régions.
  • Actualités et reportages:Les journalistes et les médias peuvent utiliser les données Yandex pour comprendre quels sujets d'actualité gagnent en popularité. Cela les aide à hiérarchiser les sujets et à proposer du contenu qui trouve un écho auprès des lecteurs.

En résumé, les résultats de recherche Yandex sont bien plus qu’une simple liste. Ils offrent des informations précieuses sur ce que les gens pensent, recherchent et veulent en ligne. En récupérant et en analysant ces données, nous pouvons prendre des décisions plus judicieuses, créer un meilleur contenu et garder une longueur d’avance dans le jeu numérique.

Comprendre la structure de Yandex

Lorsque vous visitez Yandex et saisissez une recherche, la page que vous voyez n'est pas aléatoire. Elle est conçue d'une manière spécifique. Examinons brièvement comment la page de recherche de Yandex est conçue et les éléments essentiels que nous pouvons en extraire.

Présentation et structure des pages de recherche Yandex

Imaginez que vous regardez un journal. Il y a les gros titres en haut, les articles principaux au milieu et quelques publicités ou articles annexes sur les côtés. La page de recherche de Yandex ressemble un peu à cela.

Résultats de recherche Yandex
  • Barre de recherche:C'est ici que vous tapez ce que vous recherchez.
  • Résultats de la recherche:Après avoir tapé, vous obtenez une liste de sites Web liés à votre recherche. Il s'agit des articles principaux, comme les principaux articles d'actualité d'un journal.
  • Informations complémentaires:Parfois, il y a des éléments supplémentaires sur le côté. Il peut s'agir de publicités, de recherches associées ou de réponses rapides à des questions courantes.
  • Pied de page:En bas, il peut y avoir des liens vers d'autres services Yandex ou plus d'informations sur la confidentialité et les conditions.

Principaux points de données à extraire

Maintenant que nous savons à quoi ressemble la page de Yandex, quelles informations pouvons-nous en tirer ?

  1. Résultats de la recherche:C'est la principale chose que nous voulons. C'est une liste de sites Web liés à notre recherche. Si nous faisons du scraping, nous nous concentrerons sur l'obtention de ces liens de sites Web.
  2. Titre des sites Web:À côté de chaque lien se trouve un titre. Ce titre donne une idée rapide du contenu du site.
  3. Description du site Web:Sous le titre, il y a généralement une petite description ou un extrait du site Web. Cela peut nous en dire plus sur le contenu du site Web sans avoir à cliquer dessus.
  4. Publicité:Parfois, les premiers résultats peuvent être des publicités. Il s'agit de sites Web qui ont payé Yandex pour apparaître en haut de la page. Il est utile de savoir quels résultats sont des publicités et lesquels sont organiques (non payants).
  5. recherches associées:Au bas de la page, d'autres suggestions de recherche peuvent être liées à ce que vous avez saisi. Elles peuvent donner des idées pour d'autres recherches ou sujets connexes.

Comprendre la structure de Yandex nous aide à savoir où chercher et sur quoi nous concentrer lors du scraping. Connaître la disposition et les points de données clés nous permet de recueillir les informations dont nous avons besoin plus efficacement.

Configuration de votre environnement

Avant de récupérer les résultats de recherche Yandex, nous devons nous assurer que notre configuration est prête. Nous devons installer les outils et les bibliothèques nécessaires, choisir le bon IDE et obtenir les informations d'identification API essentielles.

Installation de Python et bibliothèques requises

  • La première étape de la configuration de votre environnement consiste à vous assurer que Python est installé sur votre système. Si vous devez encore installer Python, téléchargez-le depuis le site Web officiel à l'adresse python.org.

  • Une fois Python installé, l'étape suivante consiste à vérifier que vous disposez des bibliothèques requises pour ce projet. Dans notre cas, nous aurons besoin de trois bibliothèques principales :

    • Bibliothèque Python Crawlbase:Cette bibliothèque sera utilisée pour faire Requêtes HTTP vers la page de recherche Yandex en utilisant Crawlbase Crawling APIPour l'installer, vous pouvez utiliser pip avec la commande suivante :
    1
    pip installe crawlbase
    • Belle soupe 4: Beautiful Soup est une bibliothèque Python qui permet de récupérer et d'analyser facilement le contenu HTML des pages Web. C'est un outil essentiel pour extraire des données du Web. Vous pouvez l'installer à l'aide de pip :
    1
    pip installer beautifulsoup4
    • Pandas:Pandas est une puissante bibliothèque de manipulation et d'analyse de données en Python. Nous l'utiliserons pour stocker et gérer les données récupérées. Installez pandas avec pip :
    1
    pip installer des pandas

Choisir le bon IDE de développement

Un environnement de développement intégré (IDE) fournit un environnement de codage avec des fonctionnalités telles que la mise en surbrillance du code, la saisie semi-automatique et les outils de débogage. Bien que vous puissiez écrire du code Python dans un simple éditeur de texte, un IDE peut améliorer considérablement votre expérience de développement.

Voici quelques IDE Python populaires à prendre en compte :

  1. PyCharm:PyCharm est un IDE robuste avec une édition communautaire gratuite. Il offre des fonctionnalités telles que l'analyse de code, un débogueur visuel et la prise en charge du développement Web.

  2. Code Visual Studio (code VS): VS Code est un éditeur de code gratuit et open source développé par Microsoft. Sa vaste bibliothèque d'extensions le rend polyvalent pour diverses tâches de programmation, notamment le scraping Web.

  3. Jupyter Notebook:Jupyter Notebook est excellent pour le codage interactif et l'exploration de données. Il est couramment utilisé dans les projets de science des données.

  4. Spyder:Spyder est un IDE conçu pour les tâches scientifiques et liées aux données. Il fournit des fonctionnalités telles qu'un explorateur de variables et une console interactive.

Inscription à Crawlbase et jeton API

Pour utiliser Crawlbase Crawling API pour faire des requêtes HTTP à Yandex, vous devez créer un compte sur le Site Web de Crawlbase. Maintenant, nous allons vous aider à configurer un compte Crawlbase. Suivez ces étapes :

  1. Visitez le site Web de Crawlbase:Ouvrez votre navigateur Web et accédez au site Web de Crawlbase Inscription page pour commencer le processus d'inscription.
  2. Fournissez vos coordonnées:Il vous sera demandé de fournir votre adresse e-mail et de créer un mot de passe pour votre compte Crawlbase. Remplissez les informations requises.
  3. Vérification:Après avoir soumis vos informations, vous devrez peut-être vérifier votre adresse e-mail. Vérifiez votre boîte de réception pour obtenir un e-mail de vérification de Crawlbase et suivez les instructions fournies.
  4. Connexion:Une fois votre compte vérifié, revenez sur le site Web de Crawlbase et connectez-vous à l'aide de vos informations d'identification nouvellement créées.
  5. Accédez à votre jeton API: Vous aurez besoin d'un jeton API pour utiliser Crawlbase Crawling API. Vous pouvez trouver vos jetons ici.

Notez : : Crawlbase propose deux types de jetons, un pour les sites Web statiques et un autre pour les sites Web dynamiques ou basés sur JavaScript. Comme nous récupérons Yandex, nous opterons pour le jeton normal. Crawlbase offre généreusement une allocation initiale de 1,000 XNUMX requêtes gratuites pour le Crawling API, ce qui en fait un excellent choix pour notre projet de web scraping.

Avec Python et les bibliothèques requises installées, l'IDE de votre choix configuré et votre jeton Crawlbase en main, vous êtes bien préparé pour commencer à extraire les résultats de recherche Yandex.

Récupération et analyse des résultats de recherche

Le processus implique plusieurs étapes lors de l'extraction des résultats de recherche Yandex, de la création de l'URL appropriée à la gestion du contenu dynamique. Cette section vous guidera à travers chaque étape, en vous assurant de disposer d'une feuille de route claire pour récupérer et analyser avec succès les résultats de recherche Yandex.

Création de l'URL pour le scraping ciblé

Yandex, comme de nombreux moteurs de recherche, propose une méthode simple pour structurer les URL pour des requêtes de recherche spécifiques. En comprenant cette structure, vous pouvez personnaliser votre processus de scraping pour récupérer exactement ce dont vous avez besoin.

  • Structure basique:Une URL de recherche Yandex classique commence par le domaine principal suivi des paramètres de recherche. Par exemple :
1
2
# Remplacez votre_requête_de_recherche_ici par le terme de recherche souhaité.
https://yandex.ru/search/?text=your_search_query_here
  • Paramètres avancés: Yandex propose différents paramètres qui permettent des recherches plus précises. Parmi les paramètres courants, on trouve :
    • &lr=:Ajoutez le paramètre « lr » suivi du code de langue pour afficher uniquement les résultats dans cette langue.
    • &p=:Pour la pagination, vous permettant de naviguer à travers différentes pages de résultats.
  • Codage: Assurez-vous que la requête de recherche est correctement codée. Ceci est crucial, surtout si vos termes de recherche contiennent des caractères spéciaux ou des espaces. Vous pouvez utiliser des bibliothèques Python comme urllib.parse pour gérer cet encodage de manière transparente.

En maîtrisant l'art de créer des URL pour le scraping ciblé sur Yandex, vous vous donnez les moyens d'extraire des données précises et pertinentes, garantissant que vos efforts de scraping produisent des informations précieuses.

Effectuer des requêtes HTTP à l'aide de Crawling API

Une fois que nous avons notre URL, l'étape suivante consiste à récupérer le contenu HTML de la page de résultats de recherche. Des plateformes comme Yandex surveillent les requêtes fréquentes provenant de la même adresse IP, ce qui peut entraîner des restrictions ou des interdictions. C'est là que Crawlbase intervient. Crawling API brille en proposant une solution avec son mécanisme de rotation IP.

Utilisons « Vestes d'hiver » comme requête de recherche cible. Vous trouverez ci-dessous un extrait de code illustrant comment exploiter l' Crawling API:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
de base d'exploration importer API d'exploration
de urllib.parse importer Devis

API_TOKEN = 'VOTRE_JETON_CRAWLBASE'
crawling_api = API d'exploration({'jeton':API_TOKEN})

URL = f'https://yandex.com/search/?text=${citation(« Vestes d'hiver »)}'

réponse = crawling_api.get(url)

if réponse['en-têtes']['pc_status']== «200 ':
html_content = réponse['corps'].décoder(« utf-8 »)
impression(contenu_html)
d'autre:
impression(f"Échec de la récupération de la page. Code d'état de Crawlbase : {réponse['en-têtes']['pc_status']}")

Exécution du script

Après avoir vérifié que votre environnement est configuré et que les dépendances nécessaires sont installées, l'exécution du script devient un jeu d'enfant :

  1. Enregistrez le script avec un .py extension, par exemple, yandex_scraper.py.
  2. Lancez votre terminal ou votre invite de commande.
  3. Accédez au répertoire contenant le script.
  4. Exécutez le script en utilisant : python yandex_scraper.py.

En exécutant ce script, il interagira avec Yandex, recherchera « Vestes d’hiver » et affichera le contenu HTML dans votre terminal.

Capture instantanée de sortie HTML

Inspection du code HTML pour obtenir des sélecteurs CSS

Une fois le contenu HTML obtenu à partir de la page de résultats de recherche, l'étape suivante consiste à analyser sa structure et à localiser l'emplacement des données de tarification. C'est là que les outils de développement Web et de navigateur viennent à notre secours. Décrivons comment vous pouvez inspecter la structure HTML et dénicher ces précieux sélecteurs CSS :

Inspecter les résultats de recherche Yandex
  1. Ouvrir la page Web:Accédez à l’URL de recherche Yandex que vous souhaitez récupérer et ouvrez-la dans votre navigateur Web.
  2. Faites un clic droit et inspectez:Utilisez votre pouvoir de clic droit sur un élément que vous souhaitez extraire et sélectionnez « Inspecter » ou « Inspecter l'élément » dans le menu contextuel. Cette incantation mystique fera apparaître les outils de développement du navigateur.
  3. Localiser la source HTML:Dans les limites des outils de développement, le code source HTML de la page Web dévoilera ses secrets. Passez votre curseur sur divers éléments du panneau HTML et voyez les parties correspondantes de la page Web s'illuminer comme par magie.
  4. Identifier les sélecteurs CSS:Pour libérer les données d'un élément particulier, faites un clic droit dessus dans les outils de développement et choisissez avec élégance « Copier » > « Copier le sélecteur ». Cette manœuvre élégante transportera le sélecteur CSS de cet élément dans votre presse-papiers, prêt à être utilisé dans vos incantations de scraping Web.

Une fois que vous disposez de ces sélecteurs, vous pouvez procéder à la structuration de votre scraper Yandex pour extraire efficacement les informations requises.

Extraction des détails des résultats de recherche

Python fournit des outils pratiques pour naviguer et comprendre le contenu Web, BeautifulSoup étant un choix remarquable.

Auparavant, nous avons identifié des codes spécifiques, appelés sélecteurs CSS, agissant comme des marqueurs, dirigeant notre programme précisément vers les données dont nous avons besoin sur une page Web. Par exemple, nous pouvons vouloir des détails tels que le titre, l'URL et la description du résultat de recherche. De plus, bien que nous ne puissions pas récupérer directement la position d'un résultat de recherche, nous pouvons certainement le noter pour référence. Voici comment nous pouvons mettre à jour notre script précédent et extraire ces détails à l'aide de BeautifulSoup :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
de urllib.parse importer Devis
importer json

# Initialisez CrawlingAPI avec votre jeton API
API_TOKEN = 'VOTRE_JETON_CRAWLBASE'
crawling_api = API d'exploration({'jeton':API_TOKEN})

def récupérer_page_html(url):
réponse = crawling_api.get(url)
if réponse['en-têtes']['pc_status']== «200 ':
retourner réponse['corps'].décoder("utf-8")
d'autre:
impression(f"La demande a échoué avec le code d'état crawlbase {réponse['en-têtes']['pc_status']}")
retourner Aucun

def scrape_yandex_search(contenu_html):
soupe = BeautifulSoup(contenu_html, 'html.parser')

# Extraction des détails des résultats de recherche
résultats_de_recherche = []
pour position, résultat in énumérer(soupe.select('.serp-élément'), début=1):
title_element = résultat.select_one('h2.organic__url-texte')
url_element = résultat.select_one('a.organic__url')
description_element = résultat.select_one('div.organic__content-wrapper')

résultat_de_recherche = {
'positionner': position,
'Titre': titre_élément.get_text(strip=Vrai) if élément_titre d'autre Aucun,
'URL': élément_url['href'] if élément_url d'autre Aucun,
'la description': description_element.get_text(bande=Vrai) if description_élément d'autre Aucun,

}
résultats_de_recherche.append(résultat_de_recherche)

retourner Résultats de recherche

def principal
requête_recherche = « Vestes d'hiver »
URL = f'https://yandex.com/search/?text={citation(requête_recherche)}'
html_content = récupérer_page_html(url)

if contenu_html :
résultats_de_recherche = scrape_yandex_search(contenu_html)
impression(json.dumps(résultats_de_recherche, assurer_ascii=Faux, retrait=2))

if __nom__ == "__principale__":
principale()

La série fetch_page_html La fonction envoie une requête HTTP GET à la page de résultats de recherche de Yandex à l'aide de la bibliothèque CrawlingAPI et d'une URL spécifiée. Si le code d'état de la réponse est 200, indiquant le succès, elle décode le UTF-8 corps de la réponse et renvoie le contenu HTML ; sinon, il imprime un message d'erreur et renvoie None.

Pendant ce temps, le scrape_yandex_search La fonction utilise BeautifulSoup pour analyser le contenu HTML de la page de résultats de recherche Yandex. La fonction parcourt les résultats de recherche, structure les informations extraites et les ajoute à la page de résultats de recherche. search_results liste. Enfin, la fonction renvoie la liste compilée des résultats de recherche.

La série main La fonction est comme un centre de contrôle, démarrant le processus d'obtention et d'organisation des résultats de recherche Yandex pour une requête de recherche particulière. Il affiche ensuite les résultats collectés dans un format de style JSON facile à lire.

Exemple de sortie :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
[
{
"position": 1,
« Titre »: « Les meilleures vestes d'hiver de 2024 | Switchback Travel »,
"url": "https://www.switchbacktravel.com/best-winter-jackets",
"la description": « Parka 3 en 1 Patagonia Tres (veste d'hiver) Catégorie : Décontractée Garnissage : 4.2 oz de duvet à pouvoir gonflant de 700 Poids : 2 lb. »
},
{
"position": 2,
« Titre »: "Veste d'hiver— купить по низкой цене на Яндекс Маркете",
"url": "https://market.yandex.ru/search?text=winter%20jacket",
"la description": "Купитьwinterjacket- 97 prедложений - низкие цены, быстрая доставка от 1-2 часов, возможность оплаты в рассрочку...Куртка ASICS Lite ShowWinterJacket. 15 338 ₽."
},
{
"position": 3,
« Titre »: « Amazon.com:Vestes d'hiver »,
"url": "https://www.amazon.com/Winter-Jackets/s?k=Winter+Jackets",
"la description": "CAMEL CROWN Veste de ski imperméable pour homme avec capuche amovible et coupe-vent en polaire Parka Veste de pluie Manteau d'hiver."
},
{
"position": 4,
« Titre »: "19 meilleures vestes d'hiver pour hommes et femmes (2023 MASSIVE...",
"url": "https://www.thebrokebackpacker.com/best-winter-jackets/",
"la description": « Réponse rapide : ce sont les meilleures vestes d'hiver de 2023. Les meilleures vestes d'hiver de 2023. N° 1 – Meilleure veste d'hiver globale pour hommes. »
},
{
"position": 5,
« Titre »: « Les 29 meilleures marques de vestes d'hiver de luxe (2024) »,
"url": "https://www.irreverentgent.com/best-luxury-winter-jacket-brands/",
"la description": « Si vous êtes prêt à enfin avoir une apparence et une sensation inarrêtables pendant les mois les plus froids, lisez la suite pour découvrir les meilleures marques de vestes d'hiver de luxe et de créateurs. »
},
{
"position": 6,
« Titre »: « Les 14 meilleures vestes d'hiver pour le froid extrême en... - PureWow »,
"url": "https://www.purewow.com/fashion/best-winter-jackets-for-extreme-cold",
"la description": « Pour de telles occasions, vous voudrez certainement porter l'un de ces manteaux ultra-chauds. Ces sur-matelas de haute technologie sont les meilleures vestes d'hiver pour le froid extrême... »
},
{
"position": 7,
« Titre »: « Les meilleures vestes d'hiver de 2024 »,
"url": "https://gearjunkie.com/apparel/best-winter-jackets",
"la description": « Nouveauté pour la saison d'hiver 2023-2024, la parka Patagonia Stormshadow (899 $) est notre nouvelle veste d'hiver polyvalente préférée. »
},
{
"position": 8,
« Titre »: "Зимний пуховик дLINныйWINTERJACKET173622027...",
"url": "https://www.WildBerries.ru/catalog/173622027/detail.aspx",
"la description": « Похожие. сюда.WINTERJACKET.Читать ещёПохожие. Следующий слайд. Зимний пуховик дLINныйWINTERJACKET. C'est vrai. Très bien. ... hollofaйber. Все характеристики and описание переехали сюда.VESTE D'HIVER. Зимний пуховик дLINный. 240 оценок.СкрытьЦена47614 761₽"
},
{
"position": 9,
« Titre »: "Мужские зимние куртки — купить в интернет-магазине...",
"url": "https://www.Lamoda.ru/c/3816/clothes-men-winter-jackets/",
"la description": "Les jupes courtes sont disponibles gratuitement dans le magasin Internet Lamoda, des scènes actuelles, dans de nombreux modèles d'assortiment."
},
{
"position": 10,
« Titre »: « 27 meilleures vestes d'hiver pour hommes de 2024, testées et évaluées »,
"url": "https://www.esquire.com/style/mens-fashion/g2014/best-winter-coats/",
"la description": « Que vous soyez à la recherche d'une parka résistante aux intempéries, d'une doudoune chaude ou d'un bomber confortable, nous avons trouvé les 27 manteaux d'hiver les meilleurs et les plus élégants à acheter en 2024. »
},
{
"position": 11,
« Titre »: « Les meilleures vestes d'hiver pour hommes de 2024, testées et évaluées »,
"url": "https://www.travelandleisure.com/style/best-mens-winter-jackets-and-coats",
"la description": « Nos experts en plein air ont testé une gamme de vestes d'hiver pour trouver les meilleures du marché. »
},
{
"position": 12,
« Titre »: "Интернет-магазин Made-in-China. Поставщики из Китая",
"url": "https://yabs.yandex.ru/count/WY0ejI_zOoVX2Ldb0PKG09DUSoOQbKgbKga4mOJVzd9dpvPERUREdOVQ-VeThpVSuJu0WmY71aD94b2LKlIGkC8eyXawmKA8-aA24KZOC9gHHEA6ab0D8QKWAWaYew0Hr2AX6K5raL1jhLA9HYmXeTW1KpOjV4b0Zy9MwJTigwHfy0467SSfd681sYaSbGAqqfn7ca-V-7G20Mmvur_ELyQULm-7HlDdzFc4IgNFwTDsubFd3RNjMlfqHczS6hsTzmrrIkqASB0y040anWelv_CD4ysO9GhJbxEpBd1Q3Ri3kgxhDNgLdDqh3XxgOdD5ugemQ4CKcKAdfjMVx2nicLaPdSBMKz1X9fGf85E98ME0qdKOSXD6_7MOxsGGAZNd1HksCDqGJJuK7PMqNLDlkUVL_DACJIxDsDnfAta_F65n_s3wCEv_VTlXz_gsmy_rROT_dy0NvMkPZdu_otJqOvezTv5P_bLIc4-aFB6Y6sbwV03S6-DTdO_2AHhiWHJfetSDabDWz7QfwCl-B8h8e2Vx8KR2iFoOzc03eF1LrVal4bhuYIDQ-4dMQtqRbnoOp6T3JCagakMrX_ZcTO-4aHi5ZWXONpxcIgLIQHMYmiwEqJ7GKvJV3OK8JOf-P6115FmOHOD-1Di4B0LMGBcwoDiu0PU_avPIsIX-yOculirKKE8GdZPMV7mKURvKt9lzxy-YsW_y45FEE6RWxamqY9C9~2?etext=2202.PsLaMsAcnPGXqEYDfwE_3RxouxkWkc56UM4sxhHfKtZicGpncGZuY3d2Y25lc2pi.0b887a5f2d86e1deffcb91bcf2515e203905de3b&from=yandex.com%3Bsearch%26%23x2F%3B%3Bweb%3B%3B0%3B&q=winter+jackets",
"la description": « Доставка прямо с китайского завода. Большой выбор. Качественная production. Garantie"
}
]

Gestion de la pagination

La navigation sur plusieurs pages est un défi courant lors de l'extraction des résultats de recherche Yandex. Il est essentiel de comprendre la structure des éléments HTML indiquant la navigation entre les pages. En règle générale, vous devrez créer dynamiquement des URL pour chaque page, en ajustant les paramètres tels que les numéros de page en conséquence. La mise en œuvre d'une itération systématique sur les pages dans votre script garantit une extraction complète des données. Pour optimiser l'efficacité et éviter de surcharger les serveurs de Yandex, envisagez d'introduire des délais entre les requêtes, en adhérant à des pratiques de scraping Web responsables. Voici comment nous pouvons mettre à jour notre script précédent pour gérer la pagination :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
importer fois

# Initialisez CrawlingAPI avec votre jeton API
API_TOKEN = 'VOTRE_JETON_CRAWLBASE'
crawling_api = API d'exploration({'jeton':API_TOKEN})
position_début = 1

def récupérer_page_html(url):
réponse = crawling_api.get(url)
if réponse['en-têtes']['pc_status']== «200 ':
retourner réponse['corps'].décoder("utf-8")
d'autre:
impression(f"La demande a échoué avec le code d'état crawlbase {réponse['en-têtes']['pc_status']}")
retourner Aucun

def scrape_yandex_search(contenu_html):
de défis position_début
soupe = BeautifulSoup(contenu_html, 'html.parser')

# Extraction des détails des résultats de recherche
résultats_de_recherche = []
pour position, résultat in énumérer(soupe.select('.serp-élément'), début=position_début):
title_element = résultat.select_one('h2.organic__url-texte')
url_element = résultat.select_one('a.organic__url')
description_element = résultat.select_one('div.organic__content-wrapper')

résultat_de_recherche = {
'positionner': position,
'Titre': titre_élément.get_text(strip=Vrai) if élément_titre d'autre Aucun,
'URL': élément_url['href'] if élément_url d'autre Aucun,
'la description': description_element.get_text(bande=Vrai) if description_élément d'autre Aucun,

}
résultats_de_recherche.append(résultat_de_recherche)

position_début = position + 1

retourner Résultats de recherche

def principal
base_url = f'https://yandex.com/search/?text=${citation(« Vestes d'hiver »)}&p='
numéro_de_page = 0
tous_les_résultats_de_la_recherche = []

# Limitation de la profondeur de pagination à 6 pages
# Vous pouvez modifier la limite selon vos besoins
tout en numéro_de_page <= 5:
url = url_de_base + str(numéro_de_page)
html_content = récupérer_page_html(url)

if contenu_html :
résultats_de_recherche = scrape_yandex_search(contenu_html)
tous_les_résultats_de_recherche.extend(résultats_de_recherche)

numéro_de_page += 1
# Introduire un délai pour respecter le serveur du site
temps.sommeil(2)

# traiter davantage les résultats de la recherche

if __nom__ == "__principale__":
principale()

Le script parcourt plusieurs pages à l'aide d'une boucle while, récupérant le contenu HTML de chaque page. Pour respecter le serveur du site Web, un délai de 2 secondes est introduit entre les requêtes. Les résultats de la recherche sont ensuite extraits et agrégés dans le all_search_results liste. Cette approche systématique garantit que le script navigue à travers différentes pages, récupère le contenu HTML et accumule les résultats de recherche, gérant efficacement la pagination pendant le processus de scraping.

Stockage des données récupérées

Après avoir extrait avec succès les données des résultats de recherche de Yandex, l'étape cruciale suivante consiste à stocker ces précieuses informations pour une analyse et une référence ultérieures. Dans cette section, nous allons explorer deux méthodes courantes de stockage des données : l'enregistrement des données extraites dans un fichier CSV et leur stockage dans une base de données SQLite. Ces méthodes vous permettent d'organiser et de gérer efficacement vos données extraites.

Stockage des données récupérées dans un fichier CSV

CSV est un format largement utilisé pour stocker des données tabulaires. Il s'agit d'un moyen simple et lisible par l'homme de stocker des données structurées, ce qui en fait un excellent choix pour enregistrer vos données de résultats de recherche Yandex extraites.

Nous allons étendre notre script de scraping Web précédent pour inclure une étape permettant d'enregistrer les données extraites dans un fichier CSV à l'aide de la bibliothèque Python populaire, pandas. Voici une version mise à jour du script :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
importer pandas as pd
importer fois

# Initialisez CrawlingAPI avec votre jeton API
API_TOKEN = 'VOTRE_JETON_CRAWLBASE'
crawling_api = API d'exploration({'jeton':API_TOKEN})
position_début = 1

def récupérer_page_html(url):
# ... (inchangé)

def scrape_yandex_search
# ... (inchangé)

def principal
base_url = f'https://yandex.com/search/?text=${citation(« Vestes d'hiver »)}&p='
numéro_de_page = 0
tous_les_résultats_de_la_recherche = []

# Limitation de la profondeur de pagination à 6 pages
# Vous pouvez modifier la limite selon vos besoins
tout en numéro_de_page <= 5:
url = url_de_base + str(numéro_de_page)
html_content = récupérer_page_html(url)

if contenu_html :
résultats_de_recherche = scrape_yandex_search(contenu_html)
tous_les_résultats_de_recherche.extend(résultats_de_recherche)

numéro_de_page += 1
# Introduire un délai pour respecter le serveur du site
temps.sommeil(2)

# Enregistrer les données récupérées sous forme de fichier CSV
df = pd.DataFrame(tous_les_résultats_de_recherche)
df.to_csv('yandex_search_results.csv', indice=Faux)

if __nom__ == "__principale__":
principale()

Dans ce script mis à jour, nous avons introduit pandas, une puissante bibliothèque de manipulation et d'analyse de données. Après avoir récupéré et accumulé les résultats de recherche dans le all_search_results liste, nous créons un DataFrame pandas à partir de ces données. Ensuite, nous utilisons le to_csv méthode pour enregistrer le DataFrame dans un fichier CSV nommé « yandex_search_results.csv » dans le répertoire courant. index=False garantit que nous n'enregistrons pas l'index du DataFrame en tant que colonne séparée dans le fichier CSV.

yandex_search_results.csv Instantané du fichier :

Instantané du fichier CSV de sortie

Stockage des données récupérées dans la base de données SQLite

Si vous préférez une approche plus structurée et plus conviviale pour le stockage des données, SQLite est un moteur de base de données léger et sans serveur qui peut être un excellent choix. Vous pouvez créer une table de base de données pour stocker vos données extraites, ce qui permet une récupération et une manipulation efficaces des données. Voici comment vous pouvez modifier le script pour stocker des données dans une base de données SQLite :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
de base d'exploration importer API d'exploration
de bs4 importer BeautifulSoup
importer sqlite3
importer fois

# Initialisez CrawlingAPI avec votre jeton API
API_TOKEN = 'VOTRE_JETON_CRAWLBASE'
crawling_api = API d'exploration({'jeton':API_TOKEN})
position_début = 1

def récupérer_page_html(url):
# ... (inchangé)

def scrape_yandex_search
# ... (inchangé)

def initialiser_base_de_données
# Créer ou se connecter à la base de données SQLite
conn = sqlite3.connect('search_results.db')
curseur = conn.curseur()

# Créer une table pour stocker les résultats de la recherche
curseur.execute('' '
CRÉER UNE TABLE SI ELLE N'EXISTE PAS résultats_de_recherche (
titre TEXTE,
url TEXTE,
description TEXTE,
position ENTIER
)
'' ')

# Valider les modifications et fermer la connexion à la base de données
conn.commit()
conn.close()

def insérer_les_résultats_de_la_recherche(liste_de_résultats):
# Créer ou se connecter à la base de données SQLite
conn = sqlite3.connect('search_results.db')
curseur = conn.curseur()

# Créer une liste de tuples à partir des données
data_tuples = [(résultat['Titre'], résultat['URL'], résultat['la description'], résultat['positionner']) pour résultat in [liste_résultats]

# Insérer des données dans la table search_results
curseur.executemany('' '
INSÉRER DANS les résultats de recherche (titre, URL, description, position)
VALEURS (?, ?, ?, ?)
'' ', tuples_de_données)

conn.commit()
conn.close()

def principal
base_url = f'https://yandex.com/search/?text=${citation(« Vestes d'hiver »)}&p='
numéro_de_page = 0
tous_les_résultats_de_la_recherche = []

# Initialiser la base de données
initialiser_base_de_données()

# Limitation de la profondeur de pagination à 6 pages
# Vous pouvez modifier la limite selon vos besoins
tout en numéro_de_page <= 5:
url = url_de_base + str(numéro_de_page)
html_content = récupérer_page_html(url)

if contenu_html :
résultats_de_recherche = scrape_yandex_search(contenu_html)
tous_les_résultats_de_recherche.extend(résultats_de_recherche)

numéro_de_page += 1
# Introduire un délai pour respecter le serveur du site
temps.sommeil(2)

# Insérer les données récupérées dans la base de données SQLite
insert_search_results(tous_les_résultats_de_recherche)

if __nom__ == "__principale__":
principale()

Les fonctions, initialize_database() et insert_search_results(result_list), traite de la gestion d'une base de données SQLite. initialize_database() la fonction est responsable de la création ou de la connexion à un fichier de base de données nommé search_results.db et définir une structure de table pour stocker les résultats de la recherche. insert_search_results(result_list) la fonction insère les résultats de recherche extraits dans ce nom de table de base de données comme search_results.

search_results Aperçu du tableau :

Aperçu du tableau des résultats de la recherche

Mot de la fin

Ce guide a fourni les informations nécessaires pour extraire les résultats de recherche Yandex en utilisant Python et Crawlbase Crawling API. Au fur et à mesure que vous poursuivez votre parcours de scraping Web, n'oubliez pas que la polyvalence de ces compétences s'étend au-delà de Yandex. Explorez nos guides supplémentaires pour des plateformes telles que Google et Bing, élargissant ainsi votre expertise en matière de scraping des moteurs de recherche.

Voici quelques autres guides de scraping Web Python que vous voudrez peut-être consulter :

(I.e. Comment récupérer Expedia

(I.e. Comment récupérer Yelp

(I.e. Comment récupérer Producthunt

(I.e. Comment récupérer des images à partir de DeviantArt

Nous comprenons que le scraping Web peut présenter des défis et il est important que vous vous sentiez soutenu. Par conséquent, si vous avez besoin de conseils supplémentaires ou rencontrez des obstacles, n'hésitez pas à nous contacter. Notre équipe dédiée s'engage à vous accompagner tout au long de vos démarches de web scraping.

FAQ - Foire Aux Questions

Q. Qu'est-ce que Yandex ?

Yandex est un moteur de recherche de premier plan, surnommé le « Google russe ». Il ne s'agit pas seulement d'un moteur de recherche, mais d'une entreprise technologique qui fournit divers services numériques, notamment des fonctionnalités de recherche, des cartes, des services de messagerie électronique et de stockage dans le cloud. Originaire de Russie, Yandex a étendu ses services aux pays voisins et est devenu un acteur important du secteur technologique.

Q. Pourquoi quelqu'un voudrait-il récupérer les résultats de recherche Yandex ?

Il peut y avoir plusieurs raisons pour lesquelles quelqu'un peut envisager de récupérer les résultats de recherche Yandex. Les chercheurs peuvent vouloir analyser les modèles de recherche, les entreprises peuvent vouloir recueillir des informations sur le marché et les développeurs peuvent vouloir intégrer les résultats de recherche dans leurs applications. En récupérant les résultats de recherche, on peut comprendre le comportement des utilisateurs, suivre les tendances ou créer des outils qui s'appuient sur des données de recherche en temps réel.

La légalité du scraping Web dépend de divers facteurs, notamment des conditions d'utilisation du site Web. Yandex, comme de nombreux autres moteurs de recherche, a mis en place des directives et des conditions d'utilisation. Il est essentiel de lire et de comprendre ces conditions avant de procéder au scraping. Assurez-vous toujours que l'activité de scraping respecte les conditions d'utilisation de Yandex. robots.txt fichier, ne surcharge pas leurs serveurs et ne viole aucune loi sur les droits d'auteur ou la confidentialité. En cas de doute, il est conseillé de demander un avis juridique ou d'utiliser d'autres méthodes pour obtenir les données requises.

Q. Comment puis-je empêcher mon IP d'être bloquée pendant le scraping ?

Le blocage de votre adresse IP est un défi courant lors de la récupération de sites Web. Des outils comme Crawlbase Crawling API Il est utile d'atténuer ce risque. L'API propose une rotation IP, en basculant automatiquement entre plusieurs adresses IP. Cette fonctionnalité garantit que vous n'envoyez que quelques requêtes à partir d'une seule IP sur une courte période, réduisant ainsi les risques de déclenchement de mesures de sécurité telles que les interdictions d'IP. De plus, il est essentiel d'intégrer des délais entre les requêtes, d'utiliser des agents utilisateurs et de respecter toutes les règles de limitation de débit définies par le site Web pour maintenir un processus de scraping fluide.