跳转到主要内容

从给定文本中收集和提取URL。

项目描述

URLExtract是Python类,用于基于定位TLD从给定文本中收集(提取)URL。

Build Git tag Python Version Compatibility PyPI downloads per week PyPI downloads

它是如何工作的

它尝试在给定文本中找到任何TLD的出现。如果找到TLD,它将从该位置开始扩展边界,向两侧搜索“停止字符”(通常是空白、逗号、单引号或双引号)。

有一个DNS检查选项,也可以拒绝无效的域名。

注意:TLD列表从iana.org下载,以保持您对新TLD的更新。

安装

该软件包可在PyPI上找到 - 您可以通过pip进行安装。

https://img.shields.io/pypi/v/urlextract.svg https://img.shields.io/pypi/status/urlextract.svg
pip install urlextract

文档

在线文档发布在http://urlextract.readthedocs.io/

要求

  • IDNA将链接转换为IDNA格式

  • uritools用于域名验证

  • platformdirs用于确定用户的缓存目录

  • dnspython用于缓存DNS结果

    pip install idna
    pip install uritools
    pip install platformdirs
    pip install dnspython

或者您可以使用 requirements.txt 安装依赖项

pip install -r requirements.txt

运行 tox

安装 tox

pip install tox

然后运行它

tox

示例

您可以在 urlextract.py 的末尾查看命令行程序。但您需要知道的是这个

from urlextract import URLExtract

extractor = URLExtract()
urls = extractor.find_urls("Text with URLs. Let's have URL janlipovsky.cz as an example.")
print(urls) # prints: ['janlipovsky.cz']

或者您可以通过以下方式获取文本中的 URL 生成器

from urlextract import URLExtract

extractor = URLExtract()
example_text = "Text with URLs. Let's have URL janlipovsky.cz as an example."

for url in extractor.gen_urls(example_text):
    print(url) # prints: ['janlipovsky.cz']

或者,如果您只想检查至少有一个 URL,您可以这样做

from urlextract import URLExtract

extractor = URLExtract()
example_text = "Text with URLs. Let's have URL janlipovsky.cz as an example."

if extractor.has_urls(example_text):
    print("Given text contains some URL")

如果您想获得最新的 TLD 列表,可以使用 update()

from urlextract import URLExtract

extractor = URLExtract()
extractor.update()

或者 update_when_older() 方法

from urlextract import URLExtract

extractor = URLExtract()
extractor.update_when_older(7) # updates when list is older that 7 days

已知问题

由于 TLD 可以不仅是缩写,还可以是一些有意义的词,因此在我们搜索某些 HTML 页面中的 URL 时可能会看到“错误匹配”。例如,当您使用其类引用 HTML 项目时,在 CSS 或 JS 中可能会发生错误匹配。

示例 HTML 代码

<p class="bold name">Jan</p>
<style>
  p.bold.name {
    font-weight: bold;
  }
</style>

如果这个 HTML 片段是 urlextract.find_urls() 的输入,它将返回 p.bold.name 作为 URL。urlextract 的行为是正确的,因为 .name 是有效的 TLD,urlextract 只看到存在一个有效的域名 bold.name,而 p 是有效的子域。

许可证

此代码受 MIT 许可证许可。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源分发

urlextract-1.9.0.tar.gz (35.4 kB 查看哈希值)

上传时间

构建分发

urlextract-1.9.0-py3-none-any.whl (21.5 kB 查看哈希值)

上传时间 Python 3

由以下支持