使用docutils.parsers.rst在reStructredText中查找超链接

时间:2019-03-13 15:19:57

标签: python restructuredtext

对于某些内部一致性检查工具,我尝试使用python3在第一个命令中组装所有超链接(外部引用,图像等)的列表。

我设法解析了第一个并使用以下代码遍历了树:

        parser = docutils.parsers.rst.Parser()
        components = (docutils.parsers.rst.Parser,)
        settings = docutils.frontend.OptionParser(components=components).get_default_values()
        document = docutils.utils.new_document('<rst-doc>', settings=settings)
        parser.parse(f, document)

        class MyVisitor(docutils.nodes.NodeVisitor):
            def visit_reference(self, node: docutils.nodes.reference) -> None:
                """Called for "reference" nodes."""
                print("reference", node)

            def unknown_visit(self, node: docutils.nodes.Node) -> None:
                """Called for all other node types."""
                print("unknown_visit", node)

        visitor = MyVisitor(document)
        document.walk(visitor)

但是,我现在完全沉迷于如何在结果中查找对图像和外部链接(URL)的引用。

有人知道如何以编程方式从已解析的文档中检索这些外部链接吗?

1 个答案:

答案 0 :(得分:1)

是的,使用正则表达式库

https://www.w3schools.com/python/python_regex.asp

您应该能够匹配类似(http[^\s]*)之类的东西,这意味着匹配文本“ http”,后跟零个或多个来自反向空格的字符(除空格字符之外的任何字符)