Raclage Web moderne avec BeautifulSoup et Selenium

Vue d'ensemble

HTML est presque intuitif. CSS est un grand progrès qui sépare proprement la structure d'une page de son apparence. JavaScript ajoute quelques pizazz. C'est la théorie. Le monde réel est un peu différent.

Dans ce didacticiel, vous apprendrez comment le contenu que vous voyez dans le navigateur est rendu et comment le supprimer si nécessaire. En particulier, vous apprendrez à compter les commentaires Disqus. Nos outils seront Python et d’impressionnants packages tels que les requêtes, BeautifulSoup et Selenium..

Quand faut-il utiliser le raclage Web??

Le grattage Web consiste à récupérer automatiquement le contenu de pages Web conçues pour interagir avec des utilisateurs humains, à les analyser et à extraire certaines informations (éventuellement en parcourant des liens vers d'autres pages). C'est parfois nécessaire s'il n'y a pas d'autre moyen d'extraire les informations nécessaires. Idéalement, l'application fournit une API dédiée pour accéder à ses données par programme. Il y a plusieurs raisons pour lesquelles le raclage Web devrait être votre dernier recours:

  • Il est fragile (les pages Web que vous grattez peuvent changer fréquemment).
  • Cela peut être interdit (certaines applications Web ont des politiques contre le raclage).
  • Il peut être lent et coûteux (si vous devez chercher et parcourir beaucoup de bruit).

Comprendre les pages Web du monde réel

Voyons ce à quoi nous sommes confrontés en examinant le résultat d’un code d’application Web commun. Dans l'article Introduction to Vagrant, il y a quelques commentaires de Disqus au bas de la page:

Afin de recueillir ces commentaires, nous devons d'abord les trouver sur la page..

Voir le source de la page

Depuis la nuit des temps (tous les navigateurs), tous les navigateurs prennent en charge l’affichage du code HTML de la page en cours. Voici un extrait de la source de vue de Introduction to Vagrant qui commence par un énorme bloc de JavaScript minifié et oublié et sans rapport avec l'article lui-même. Voici une petit partie de celui-ci:

Voici du code HTML réel de la page:

Cela semble assez compliqué, mais ce qui est surprenant, c'est que vous ne trouverez pas les commentaires Disqus dans le source de la page..

Le puissant cadre en ligne

Il s'avère que la page est un mashup et que les commentaires Disqus sont incorporés en tant qu'élément iframe (inline frame). Vous pouvez le trouver en cliquant avec le bouton droit de la souris sur la zone de commentaires et vous verrez qu'il contient des informations sur le cadre et la source:

Ça a du sens. L’incorporation de contenu tiers sous forme d’iframe est l’une des principales raisons d’utiliser des iframes. Trouvons le