Maison > Article > développement back-end > Explication détaillée de la méthode Python pour explorer les images Sogou à partir de pages Web
Je ne m'attendais pas à ce que Python soit si puissant et fascinant. J'avais l'habitude de copier et coller les images une par une quand je les voyais. Maintenant, c'est mieux si vous apprenez Python, vous pouvez utiliser le programme pour enregistrer les images une par. un. L'article suivant vous présente principalement les informations pertinentes sur l'utilisation de Python3.6 pour explorer les images des pages Web d'images Sogou. Les amis dans le besoin peuvent s'y référer.
Préface
Ces derniers jours, j'ai étudié l'algorithme du robot d'exploration qui m'a toujours intéressé. Ici, je vais écrire certaines de mes expériences de ces derniers jours. Entrez le texte ci-dessous :
Nous utilisons ici sogou comme objet à explorer.
Nous entrons d'abord dans Sogou Pictures et entrons dans la catégorie fond d'écran (bien sûr, ce n'est qu'un exemple Q_Q), car si nous devons explorer certaines données d'un site Web, nous devons en avoir une compréhension préliminaire ...
Après avoir entré, ça y est, puis F12 pour entrer dans les options développeur j'utilise Chrome.
Cliquez avec le bouton droit sur l'image>>Vérifiez
Nous avons constaté que l'image src dont nous avons besoin se trouve sous la balise img, nous avons donc d'abord essayé de utilisez les requêtes Python pour extraire le composant image, puis obtenez le src de img, puis utilisez urllib.request.urlretrieve pour télécharger les images une par une, afin d'atteindre l'objectif d'obtenir des données par lots. L'idée est bonne. ce qui suit devrait indiquer au programme que l'URL à explorer est http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD, cette URL provient de la barre d'adresse après avoir entré la catégorie. Maintenant que nous comprenons l'adresse URL, commençons un bon moment de codage :
Lors de l'écriture de ce programme d'exploration, il est préférable de le déboguer étape par étape pour s'assurer que chaque étape de notre opération est correcte. les programmeurs devraient faire Habit. L'auteur ne sait pas si je suis programmeur. Analysons la page Web pointée par cette URL.
import requests import urllib from bs4 import BeautifulSoup res = requests.get('http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD') soup = BeautifulSoup(res.text,'html.parser') print(soup.select('img'))
sortie :
Il s'avère que le contenu de sortie ne contient pas l'élément d'image souhaité, mais analyse uniquement l'image du logo , ce qui n'est évidemment pas ce que nous voulons. En d'autres termes, les informations d'image requises ne figurent pas dans l'URL http://pic.sogou.com/pics/recommend?category=%B1%DA%D6%BD. Par conséquent, on considère que l'élément peut être dynamique. Les étudiants attentifs peuvent constater qu'en faisant glisser la molette de la souris vers le bas sur la page Web, l'image est actualisée dynamiquement. En d'autres termes, la page Web ne charge pas toutes les ressources en même temps. mais charger dynamiquement les ressources. Cela évite également que la page Web soit trop volumineuse et affecte la vitesse de chargement. L'exploration douloureuse commence ci-dessous. Nous voulons trouver les véritables URL de toutes les images. L'auteur est nouveau dans ce domaine et n'est pas très expérimenté dans cette recherche. Le dernier emplacement trouvé est F12>>Réseau>>XHR>>(Cliquez sur le fichier sous XHR)>>Aperçu.
J'ai trouvé que c'est un peu proche des éléments dont nous avons besoin. Cliquez sur all_items et constatez que les éléments suivants sont 0 1 2 3... un par un, ils semblent. être des éléments d’image. Essayez d'ouvrir une URL. J'ai trouvé que c'était vraiment l'adresse de la photo. Après avoir trouvé la cible. Cliquez sur En-têtes
sous XHR pour obtenir la deuxième ligne
URL de demande :
http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category= %E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1536&height=864, essayez de supprimer certaines parties inutiles, l'astuce est de supprimer possible après la section , l'accès n'est pas affecté. Projeté par l'auteur. L'url finale obtenue : http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start =0&len=15 Sens littéral, sachant que la catégorie peut être suivie d'une classification. start est l'indice de départ, len est la longueur, c'est-à-dire le nombre d'images. D'accord, commençons le bon moment de codage :
L'environnement de développement est Win7 Python 3.6 Lors de son exécution, Python doit installer les requêtes
Python3.6 nécessite CMD pour installer les requêtes :
.pip install requests
L'auteur est également en train de déboguer et d'écrire ici, et le code final est publié ici :
import requests import json import urllib def getSogouImag(category,length,path): n = length cate = category imgs = requests.get('http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category='+cate+'&tag=%E5%85%A8%E9%83%A8&start=0&len='+str(n)) jd = json.loads(imgs.text) jd = jd['all_items'] imgs_url = [] for j in jd: imgs_url.append(j['bthumbUrl']) m = 0 for img_url in imgs_url: print('***** '+str(m)+'.jpg *****'+' Downloading...') urllib.request.urlretrieve(img_url,path+str(m)+'.jpg') m = m + 1 print('Download complete!') getSogouImag('壁纸',2000,'d:/download/壁纸/')
Lorsque le programme a commencé à fonctionner, l'auteur était encore un peu excité. Venez le ressentir :
À ce stade, la description du processus de programmation du programme d'exploration est terminée. Dans l’ensemble, trouver l’URL où l’élément doit être exploré est la clé dans de nombreux aspects de l’exploration
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!