Modernes Web Scraping mit BeautifulSoup und Selen

Überblick

HTML ist fast intuitiv. CSS ist ein großer Fortschritt, der die Struktur einer Seite sauber von ihrem Erscheinungsbild trennt. JavaScript fügt etwas pazazz hinzu. Das ist die Theorie. Die reale Welt ist etwas anders.

In diesem Lernprogramm erfahren Sie, wie der Inhalt, den Sie im Browser sehen, tatsächlich gerendert wird, und wie Sie ihn gegebenenfalls abkratzen können. Insbesondere lernen Sie, wie man Disqus-Kommentare zählt. Unsere Tools sind Python und tolle Pakete wie Requests, BeautifulSoup und Selenium.

Wann sollten Sie Web Scraping verwenden??

Beim Web-Scraping wird automatisch der Inhalt von Webseiten abgerufen, die für die Interaktion mit menschlichen Benutzern bestimmt sind, sie werden analysiert und einige Informationen werden extrahiert (möglicherweise navigieren Sie mit Links zu anderen Seiten). Es ist manchmal notwendig, wenn es keine andere Möglichkeit gibt, die erforderlichen Informationen zu extrahieren. Idealerweise bietet die Anwendung eine dedizierte API für den programmgesteuerten Zugriff auf ihre Daten. Es gibt mehrere Gründe, warum Web Scraping Ihr letzter Ausweg sein sollte:

  • Es ist zerbrechlich (die von Ihnen gescrobten Webseiten können sich häufig ändern).
  • Es ist möglicherweise verboten (einige Web-Apps haben Richtlinien gegen das Scraping).
  • Es kann langsam und ausgedehnt sein (wenn Sie eine Menge Geräusche abrufen und durchgehen müssen).

Real-World-Webseiten verstehen

Lassen Sie uns verstehen, was uns erwartet, indem wir uns die Ausgabe einiger gängiger Webanwendungscodes ansehen. Im Artikel Einführung in Vagrant finden Sie einige Disqus-Kommentare am unteren Rand der Seite:

Um diese Kommentare zu kratzen, müssen wir sie zuerst auf der Seite finden.

Seitenquelle anzeigen

Jeder Browser seit Anbeginn der Zeit (den 1990er Jahren) hat die Möglichkeit unterstützt, den HTML-Code der aktuellen Seite anzuzeigen. Hier ist ein Ausschnitt aus der Ansichtsquelle von Introduction to Vagrant, der mit einem großen Teil des reduzierten und ublifizierten JavaScript beginnt, das nicht mit dem Artikel selbst zusammenhängt. Hier ist ein klein Teil davon:

Hier ist ein tatsächlicher HTML-Code von der Seite:

Das sieht ziemlich chaotisch aus, aber es ist überraschend, dass Sie die Disqus-Kommentare nicht im Quellcode der Seite finden.

Der mächtige Inline-Frame

Es stellt sich heraus, dass die Seite ein Mashup ist und die Disqus-Kommentare als iframe (Inline Frame) -Element eingebettet werden. Sie können es herausfinden, indem Sie mit der rechten Maustaste auf den Kommentarbereich klicken, und Sie werden feststellen, dass dort Rahmeninformationen und -quellen vorhanden sind:

Das macht Sinn. Das Einbetten von Inhalten von Drittanbietern als Iframe ist einer der Hauptgründe für die Verwendung von Iframes. Lass uns das finden