найти гиперссылки в reStructredText, используя documenttils.parsers.rst - PullRequest
0 голосов
/ 13 марта 2019

Для некоторого инструмента проверки внутренней согласованности я пытаюсь собрать список всех гиперссылок (внешние ссылки, изображения и т. Д.) В первый раз, используя 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 Ответ

1 голос
/ 13 марта 2019

Да, используйте библиотеку регулярных выражений

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

Вы должны быть в состоянии найти что-то вроде (http[^\s]*), что означает совпадение с текстом "http", за которым следует ноль или более символовиз обратного набора пробелов (все, кроме пробельных символов)

...