Je voudrais créer un grattoir d'images qui capture les images de bing, google ou n'importe quel moteur de recherche. Il y a beaucoup de réponses et d'informations sur ce sujet, mais il semble qu'elles ne fonctionnent plus, car ces entreprises essaient de forcer les gens à utiliser leur API de recherche spécifique.
Maintenant, ma question est de savoir s'il est encore possible de gratter par exemple bing pour les images. J'ai commencé à jouer avec l'envoi de XMLHttpRequests à https://www.bing.com/images/search?q=banana
. Je l'ai fait avec la bibliothèque NodeJs et avec l'équivalent Browser. Les résultats sont comparables à la requête suivante
curl -A "Chrome/80.0.3987.149" "https://www.bing.com/images/search?q=banana"
Bien sûr, il y a des .jpg
, mais ils semblent en quelque sorte aléatoires et parfois même pas liés au terme banane
. L'objectif principal serait d'obtenir l'URL d'origine, où Bing a trouvé les images. Ou obtenir en quelque sorte la même vue que celle obtenue en parcourant les éléments dans les outils de développement.
Est-ce que quelqu'un est au courant des projets open-source à jour ou comment je dois commencer ce voyage?
4 Réponses :
La dernière fois que j'ai vérifié, ce projet fonctionne bien! Je sais qu'il est écrit en Python, mais si vous ne cherchez que les images, cela devrait faire l'affaire! J'espère que ça aide :)
Je pense que cela ne fonctionnera plus pour Google car ils ont en quelque sorte randomisé la classe rg_meta
de chaque balise div
.
Vous pouvez essayer d'utiliser le pilote Web Selenium. Il devrait être facile de créer votre propre grattoir d'image avec et il utilise des navigateurs comme Firefox ou Chrome. Google et Bing ne bloqueraient pas l'accès à Selenium car il s'agit d'un navigateur.
Je recommande vivement marionnettiste pour le cas d'utilisation que vous avez mentionné. Je l'ai utilisé pour automatiser à peu près tout ce qui concerne le navigateur: remplir mes rendez-vous, obtenir mes billets de train pour récupérer des données à partir d'applications d'une seule page et bien plus encore.
C'est essentiellement un chrome sans tête et si vous avez déjà travaillé avec Javascript, vous vous sentirez à l'aise. L'API est vraiment simple et la mise en route est encore plus simple.
Juste npm i marionnettiste
et vous êtes prêt à l'exiger et à faire toutes sortes de magie: D
J'ai créé un outil open source utilisant Python qui pourrait vous intéresser. Il ne se contente pas de gratter et de télécharger des images, mais aussi de les organiser dans des dossiers, des sous-ensembles de train / validation, il supprime les images en double et propose également plusieurs options de recadrage d'image, comme le côté plus court, le côté plus long et le recadrage intelligent. >
Découvrez-le sur GitHub ou Pip:
Veuillez expliquer comment votre code fonctionne, afin que l'OP puisse apprendre quelque chose.
Il existe une documentation étape par étape sur le fichier README de GitHub. Mais ce projet est essentiellement un outil CLI, vous pouvez donc simplement exécuter une commande comme: "idt run -i grapefruit -s 500", qui téléchargera 500 images de pamplemousses. Il existe également une approche plus complexe, conçue pour générer des ensembles de données d'image entiers à l'aide de fichiers yml. De cette façon, vous pouvez configurer les classes que vous voulez, les mots-clés utilisés par chacun, le moteur de recherche, etc.
Ce n'est pas une tâche facile et nécessite du temps et beaucoup de ressources, presque impossible en fonction des coûts que vous devez engager, de toutes les manières.