So verfolgen Sie Links in einem Web mit Python

Inhaltsverzeichnis

Heute werde ich es dir beibringen Durchlaufen von Links auf einer Seite mit Python (Web-Scraping), kann dies sehr nützlich sein, um Inhalte auf einer Website automatisch zu verfolgen und dies nicht von Hand tun zu müssen. In dem Programm, das ich mitbring, wird jeder Link durch das Lesen des HTML-Codes erhalten. Sie können das Programm ändern, um nach einem bestimmten Inhalt zu suchen und nur die Links anzuzeigen, die Sie interessieren.

Sie können Web-Scraping auch mit der Datei robots.txt oder den Sitemaps der Websites durchführen.

NotizDer gezeigte Code funktioniert in Python 3.x, wenn Sie ihn in Version 2.x ausführen möchten, müssen Sie kleine Änderungen vornehmen.

Hier ist der Code:

 import Queue Import urllib.request import re from urllib.parse import urljoin def download (Seite): try: request = urllib.request.Request (page) html = urllib.request.urlopen (request) .read () print ("[ *] Download OK >> ", Seite) außer: print ('[!] Fehler beim Herunterladen', Seite) return Keine return html def crawlLinks (Seite): searchLinks = re.compile ('] + href = ["'] ( . *?) ["']', re.IGNORECASE) Queue = Queue.Queue () Queue.put (Seite) besucht = [Seite] print (" Suche nach Links in ", Seite) while (queue.qsize () > 0): html = download (queue.get ()) if html == Keine: weiter links = searchLinks.findall (str (html)) für link in links: link = urljoin (page, str (link)) if ( link nicht in besucht): queue.put (link) besucht.append (link) if __name__ == "__main__": crawlLinks ("http://www.solvetic.com") 
Das erste, was wir tun, ist iImportieren Sie die erforderlichen Bibliotheken, für reguläre Ausdrücke (re), um die Warteschlange zu verwenden (queue), um Anfragen zu stellen und eine Seite zu lesen (urllib.request) und um absolute URLs aus einer Basis-URL und einer anderen URL zu erstellen (urljoin).

Code in 2 Funktionen unterteilt
herunterladenEs hilft uns, den HTML-Code einer Seite herunterzuladen. Es braucht nicht viel Erklärung, das einzige, was es tut, ist eine Anfrage an die gewünschte Seite, es liest deren HTML, wenn alles gut geht, zeigt es eine Download-OK-Meldung an, und wenn es nicht zeigt, dass ein Fehler aufgetreten ist (Hier wir könnte Informationen über den Fehler anzeigen), gibt am Ende den HTML-Read oder None zurück.
Links verfolgenEs ist die Hauptfunktion und wird durch jeden Link ausgeführt. Lass es uns ein bisschen erklären:

  • Wir erstellen eine Variable mit einem regulären Ausdruck, der uns hilft, die Links im HTML zu finden.
  • Wir starten eine Variable vom Typ tail mit der Startseite, die uns hilft, die Links in der "Reihenfolge" zu speichern, in der wir sie entdeckt haben. Wir starten auch eine Variable vom Listentyp besucht, die wir verwenden werden, um die Links zu speichern, während sie besucht werden. Dies geschieht, um eine Endlosschleife zu vermeiden. Stellen Sie sich vor, dass Seite x auf Seite y verweist und diese wiederum auf Seite x , alle während wir diese Links endlos einfügen werden.
  • Der Kern der Funktion ist die while-Schleife, die so lange ausgeführt wird, wie die Warteschlange Links hat, also überprüfen wir, ob die Größe größer als 0 ist. In jedem Durchgang entfernen wir einen Link aus der Warteschlange und senden ihn an die Download-Funktion , das wird den HTML-Code an uns zurückgeben, dann suchen wir nach den Links und prüfen, ob wir ihn bereits besucht haben, wenn nicht, fügen wir ihn der Warteschlange und der Liste hinzu.

NotizEs mag den Anschein haben, dass die Liste überflüssig ist, aber wir werden die Links aus der Warteschlange entfernen und löschen, daher wäre die Überprüfung nicht korrekt, vielleicht der Link, den wir vor einiger Zeit besucht haben und er befindet sich nicht mehr in der Warteschlange, aber er wird in der Liste stehen.

Der letzte Teil des Codes außerhalb der Funktionen kümmert sich um die Ausführung des Codes. In der folgenden Abbildung sehen Sie einen Screenshot des laufenden Codes, der Solvtic.

Wenn Sie möchten, können Sie sich mit einer Bibliothek namens BeautifulSoup, die für Python existiert, bedienen, es wird sehr einfach zu handhaben erscheinen, ich empfehle es.

Falls du den Code möchtest, hier ist eine Zip:

TraverseLinks.zip 646 Byte 493 Downloads

Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben
wave wave wave wave wave