Wie tun Sie, extrahieren Sie eine url aus einem string in python?
Beispiel:
string = "This is a link http://www.google.com"
Wie konnte ich extrahieren 'http://www.google.com' ?
(Jeder link wird von der gleichen format, das ich.e 'http://')
- Sie könnte prüfen, diese Antwort: stackoverflow.com/questions/499345/...
- Keiner wird zurückgegeben, wenn ich versuche, die Lösung.
- Wenn dies für eine roh-text-Datei (als Ausdruck in deiner Frage), Sie könnte prüfen, diese Antwort: stackoverflow.com/questions/839994/extracting-a-url-in-python
- Siehe mathiasbynens.werden/demo/url-regex
- Möglich, Duplikat der Was ist die beste regular expression um zu überprüfen, ob ein string eine gültige URL?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann es einige Wege, dies zu tun, aber die sauberste wäre die Verwendung von regex
Wenn es mehrere links, die Sie verwenden können, etwas ähnliches wie das unten
ftp://
URLs undmailto:
URLs, etc, und wird naiv schnappen Sie sich den Schwanz von<a href="http://google.com/">Click here</a>
(d.h. durch "klicken").http
- format. Also das funktioniert wirklich gut. Aber ja, ziemlich wichtig für Menschen, die wissen, was Sie sagen, wenn Sie hier sind zum Parsen von HTML oder ähnlichem.In Ordnung zu finden, eine web-URL in eine generische Zeichenfolge, die Sie verwenden können, eine regulärer Ausdruck (regex).
Einem einfachen regex für die URL-matching-wie der folgende sollte passen Ihren Fall.
Wenn Sie möchten, noch genauer, in der TLD Abschnitt, sollten Sie sicherstellen, dass die TLD ist eine gültige TLD (siehe die gesamte Liste der gültigen TLDs hier: https://data.iana.org/TLD/tlds-alpha-by-domain.txt):
Dann können Sie einfach kompilieren der ehemaligen regex und verwenden Sie es, um mögliche matches:
Denen im Fall der string - "Dies ist ein link http://www.google.com" wird die Ausgabe:
Wenn Sie ändern Sie den Eingang mit einer komplexeren URL, zum Beispiel "Dies ist auch eine URL https://www.host.domain.com:80/path/page.php?query=value&a2=v2#foo aber das ist nicht mehr" wird die Ausgabe:
HINWEIS: Wenn Sie sind auf der Suche nach mehr URLs in einem einzigen string, können Sie immer noch die gleiche regex, sondern nur mit findall() statt Suche().
((?:(https?|s?ftp):\/\/)?(?:www\.)?((?:(?:[A-Z0-9][A-Z0-9-]{0,61}[A-Z0-9]\.)+)([A-Z]{2,6})|(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))(?::(\d{1,5}))?(?:(\/\S+)*))
. Beachten Sie auch die TLD-Liste jetzt schließt auch Spaß Endungen wieXN--VERMGENSBERATUNG-PWB
, als 24 Zeichen lang ist, wird nicht aufgefangen von diesem.(?i)
um die Muster mehr tragbar. Auch, denken Sie daran, diese entsprechen23.084.828.566
das ist keine gültige IP-Adresse, aber es ist ein Gültiger float in manchen Gebietsschemas.docs.google.com/spreadsheets/d/10FmR8upvxZcZE1q9n1o40z16mygUJklkXQ7lwGS4nlI
entspricht genaudocs.google.com/spreadsheets/d/10FmR8upvxZcZE1q9n
.Gibt es einen anderen Weg, wie zum extrahieren von URLs aus dem text leicht. Sie können urlextract um es für Sie tun, installieren Sie es einfach über pip:
und dann können Sie es verwenden, wie diese:
Finden Sie mehr info auf meiner github Seite: https://github.com/lipoja/URLExtract
HINWEIS: Es lädt eine Liste von TLDs aus iana.org um Sie zu halten up-to-date. Aber wenn das Programm keinen Internetzugang hat, dann ist es nicht für Sie.
Diese extrahiert alle urls mit Parametern, irgendwie alle oben genannten Beispiele haben nicht funktioniert, für mich