7
votes

Impossible d'extraire tous les liens d'une page Web à l'aide de demandes

J'essaie d'obtenir tous les liens connectés à chaque image de cette webpage .

Je peux obtenir tous les liens si je laisse un script sélénium défiler vers le bas jusqu'à ce qu'il atteigne le fond. Un tel lien que je souhaite gratter est Celui-ci .

Maintenant, mon objectif ici est d'analyser tous ces liens à l'aide de demandes. Ce que j'ai remarqué que les liens que je veux analyser sont construits à l'aide de tels B-upswzsjtnb shortcode.

Cependant, J'essaie de gratter ces différents shortcode disponibles dans une étiquette de script trouvée dans la source de la page dans cette page Web. Il existe environ 600 courts-coureurs dans cette page. Le script que j'ai créé peut analyser uniquement le premier 70 tel courte code qui peut finalement construire 70 liens qualifiés.

Comment puis-je saisir les 600 liaisons à l'aide de demandes?

J'ai essayé jusqu'à présent avec: xxx


5 commentaires

Avez-vous envisagé d'utiliser le API ?


Je suggère d'utiliser l'API Instagram ...


@ Robots-TXT, je tiens à savoir comment vous avez compris les différents codes courts ? De plus, avez-vous eu à vous connecter à ce site Web pour déterminer la même chose?


Je ne vois que 79 shortcode , même avec une page défilé à la fin de la fin, où se trouvent les 600 liens?


Découvrez Cette image qui représente le nombre de liens y compris @ 0M3R.


3 Réponses :


0
votes

La page Web Instagram utilise un chargement paresseux pour charger les images. Vous pouvez surmonter cela de 2 façons:

  1. Utilisez le API Instagram comme mentionné dans les commentaires
  2. Utilisez un outil comme selenium pour charger toutes les images de la page par Scrolling au bas, puis récupérer les liens

    La 1ère méthode est la meilleure façon de le faire.


1 commentaires

Vous avez eu ma question de tâche @bbloggsbott. Je n'ai pas cherché une meilleure façon de le faire; Je souhaitais plutôt accomplir le reste comme j'ai commencé. J'ai déjà eu votre suggestion dans des commentaires concernant l'API avant de placer la prime sur la question. Quant à la manière sélénium, j'ai mentionné dans mon poste que je suis allé cette route et j'ai trouvé du succès avec. Merci.



2
votes

Si vous voulez le faire avec Demandes , veuillez envisager d'interroger les demandes http xhr / ajax pour imiter chargement paresseux . Voir la photo suivante:

 Entrez la description de l'image ici

Vous faites des requêtes sur le serveur Instagram.com Semblable à gratter une JS Page de chargement paresseux de Python Demandes Post.

Disclaimer

Vous ne réussirez peut-être pas à compléter cette tâche en raison de valeurs de biscuits dynamiques ou d'une autre prévention de la gratte imposée par Instagram.


0 commentaires

0
votes

Je vous suggère d'utiliser API de graphique Instagram , si vous construisez un produit commercial puisque l'utilisation des données publiques Instagram est requise le consentement en raison de GDPR. Cette API facilitera votre travail, mais sous des limitations de l'API, telles que vous pouvez interroger 30 recherches pendant 7 jours par jeton utilisateur.

Si vous construisez un outil non commercial, vous avez deux approches.

  1. Gratte directement la page Web Instagram. Comme mentionné ci-dessus, vous pouvez utiliser Selenium et automatiser les interactions de la page car Web Page utilise JavaScript pour générer des URL d'image. L'inconvénient de cette méthode est Instagram et Facebook effectue des méthodes antitractrage pour éviter de gratter leurs données telles que l'emballage des éléments HTML avec des classes générées dynamiques, modifier fréquemment XPaths. Vous devrez peut-être dépenser beaucoup de temps pour coder et résoudre ces choses plus tard.

  2. Utilisation de bibliothèques tierces conçues pour gratter les données Instagram. Il existe de nombreuses bibliothèques tiers open source dans github et Instaloader est mon préféré. Vous pouvez télécharger tous les résultats de la recherche HASHTAG à l'aide de Commande unique . Cette bibliothèque téléchargez non seulement des images, mais aussi DATA JSON de la publication liée à l'image. Comme il existe des responsables de la bibliothèque, vous n'avez pas à vous soucier des modifications ultérieures de la page Web Instagram. Je recommande cette méthode dans votre cas.


0 commentaires