从给定文本中收集和提取URL。
urlextract的Python项目详细描述
urlextract是一个python类,用于从给定的 基于定位tld的文本。
它是如何工作的
它试图在给定的文本中找到tld的任何出现。如果找到TLD 从那个位置开始扩展边界到两边搜索 用于“停止字符”(通常为空白、逗号、单字符或双字符 引用)。
注意:TLD列表是从iana.org下载的,以使您随时了解最新的TLD。
文档
要求
用于将链接转换为IDNA格式的IDNA
用于域名验证的uritools
用于确定用户缓存目录的appdirs
pip install idna pip install uritools pip install appdirs
示例
您可以在urlextract.py末尾查看命令行程序。 但你需要知道的是:
fromurlextractimportURLExtractextractor=URLExtract()urls=extractor.find_urls("Text with URLs. Let's have URL janlipovsky.cz as an example.")print(urls)# prints: ['janlipovsky.cz']
或者您可以通过以下方式获得文本中URL上的生成器:
fromurlextractimportURLExtractextractor=URLExtract()example_text="Text with URLs. Let's have URL janlipovsky.cz as an example."forurlinextractor.gen_urls(example_text):print(url)# prints: ['janlipovsky.cz']
或者,如果您只想检查是否至少有一个URL,您可以这样做:
fromurlextractimportURLExtractextractor=URLExtract()example_text="Text with URLs. Let's have URL janlipovsky.cz as an example."ifextractor.has_urls(example_text):print("Given text contains some URL")
如果您想要最新的tld列表,可以使用update():
fromurlextractimportURLExtractextractor=URLExtract()extractor.update()
或者update_when_older()方法:
fromurlextractimportURLExtractextractor=URLExtract()extractor.update_when_older(7)# updates when list is older that 7 days
已知问题
因为tld不仅是快捷方式,而且是一些有意义的词,所以当我们搜索时可能会看到“错误匹配” 一些html页面中的url。例如,当您引用HTML项时,在CSS或JS中可能会出现错误匹配 使用它的类。
HTML代码示例:
<pclass="bold name">Jan</p><style>p.bold.name{font-weight:bold;}</style>
如果这个html片段在urlextract.find_urls()的输入上,它将以url的形式返回p.bold.name。 urlExtract的行为是正确的,因为.name是有效的tld,而urlExtract只看到有bold.name 有效的域名和p是有效的子域。
许可证
这段代码是根据麻省理工学院的许可证授权的。