/ / Python - Les URL correspondantes dans le code source d'une page avec regex - python, regex

Python - URL correspondantes dans le code source d'une page - python, regex

J'utilise ce modèle pour correspondre à chaque URL d'une page Web donnée:

import re

source = """
<p>https://example.com</p>
... some code
<font color="E80000">https://example.com</font></a>
"""

urls = re.findall("http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*(),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+", source)

Cela a assez bien fonctionné pour moi jusqu'à maintenant. J'ai trouvé que parfois, il ne correspond pas à l'URL exacte. Comme dans l'exemple, il correspond à l'URL https://example.com</p> et https://example.com</font></a> inlcuding les balises de fermeture mais je ne peux pas "comprendre le problème dans la regex. J'ai pris ce code à partir d'une autre question de pile.

Réponses:

0 pour la réponse № 1

essaye ça,

import re

source = """
<p>https://example.com</p>
... some code
<font color="E80000">https://example.com</font>
https://example.com</p></a>
https://example.com</font></a>
"""
urls = re.findall("(http|ftp|https)://([w_-]+(?:(?:.[w_-]+)+))([w.,@?^=%&:/~+#-]*[w@?^=%&/~+#-])?", source)
print urls