Gibt es eine vordefinierte Klasse für die URL in Python?

8

Ich suche etwas wie java.net.URL in Python-Modulen, Django, Zope oder wo auch immer in Python. Ich möchte es vorzugsweise von der Semantik Grund , weil das Ergebnis der Analyse des betroffenen Programms impliziert, dass die URL eine wesentliche Rolle darin spielt. Die Folge ist, dass eine solche URL-Klasse auch in diesem Programm einen großen praktischen Nutzen haben wird.

Natürlich könnte ich einen solchen Kurs selbst schreiben, aber ich würde mich gerne umsehen, bevor ich anfange, das Rad neu zu erfinden .

Ich habe urllib2 und urlparse . Das urlparse hat grundsätzlich die Funktionalität, die ich brauche, aber es kapselt es nicht in eine Klasse wie java.net.URL ein. Bezüglich meiner Analyse meines Programms funktioniert es auf dem Kopf stehend.

Ich habe mir auch den Quellcode von urlparse in den Klassen SplitResult und ParseResult angesehen. Sie haben einige grundlegende Funktionen und sie können für Unterklassen verwendet werden. Aber ich muss den Rest der URL-Funktionen als Unterklassenmethoden neu schreiben.

Ich fand auch mxURL - Flexibler URL-Datentyp für Python . Es ist sehr nah an dem, was ich wirklich will. Nur scheint es ein Overkill für meinen Zweck zu sein.

Kann jemand eine andere Option vorschlagen? Soll ich das Rad neu erfinden?

Meine Lösung:

Um meine URL-Klasse zu bekommen, habe ich im Grunde zwei Dinge getan:

  1. Vererbt von urlparse.ResultMixin .
  2. Definieren Sie eine Funktion, die nur urlparse.urlparse() aufruft und Ergebnisse in transformiert Parameter der URL-Instanz.
sumid 29.05.2011, 20:39
quelle

3 Antworten

2

Vielleicht möchten Sie in Erwägung ziehen, sich furl anzuschauen, da dies eine Antwort auf Ihre Anforderungen sein könnte.

    
neutrinus 14.08.2012, 09:22
quelle
13

urlparse kapselt URLs in eine Klasse namens ParseResult , so dass sie als eine Factory-Funktion für diese betrachtet werden kann. Direkt aus der Python-Dokumentation:

%Vor%

Wenn Sie verzweifelt eine Klasse namens URL zum Verkapseln Ihrer URLs wünschen, verwenden Sie einen Alias ​​( URL = urlparse.ParseResult ) oder erstellen Sie einen Adapter.

    
Fred Foo 29.05.2011 21:02
quelle
0

Was wir ab 2018 haben:

Heute wird nur noch der Markt instand gehalten, aber der Hauptnachteil ist, dass er veränderbar ist, was natürlich keine Best Practices fördert. (Es gibt eine gute moderne Referenz - pathlib , die aus unveränderlichen Klassen besteht.)

Insgesamt gibt es eine schmerzlose OO-Methode zum Parsen und Konstruieren von URLs.

    
George Sovetov 16.01.2018 18:20
quelle

Tags und Links