В этом вопросе делается попытка расширить код Джейсона С. (Спасибо, Джейсон), который можно найти здесь: Docutils: перемещение по разделам?
Оригинал от Джейсона С.
import docutils
def doctree_resolved(app, doctree, docname):
for section in doctree.traverse(docutils.nodes.section):
title = section.next_node(docutils.nodes.Titular)
if title:
print title.astext()
def setup(app):
app.connect('doctree-resolved', doctree_resolved)
Теперь предположим, что я хочу захватить текст только подразделов H2 (или, по крайней мере, всех подразделов, если это единственный вариант).
Теоретически , я пытаюсь создать словарь заголовков подразделов с соответствующими URL-адресами и путями.
Как лучше всего это сделать?
Моя версия — к оригиналу выше — неудачно, но, надеюсь, вы сможете понять мой подход, прочитав код. Я считаю, что простой цикл for с использованием построения списка не увенчался успехом из-за строки title =section.next_node(docutils.nodes.Titular), в частности, next_node.... Я посмотрел, но не смог найти документацию по next_node.
Итак, каким может быть другой способ захвата подразделов H2 из каждого документа, чтобы я мог создать словарь, в котором каждый подраздел есть путь/URL-адрес? ПРИМЕЧАНИЕ. Я еще не пытался создать полный URL-адрес в приведенном ниже коде.
import docutils
docname_list = []
section_list = []
def doctree_resolved(app, doctree, docname):
for section in doctree.traverse(docutils.nodes.section):
title = section.next_node(docutils.nodes.Titular)
if title:
print(title.astext())
docname_list.append(docname)
section_list.append(title.astext())
...
url_dict = dict(zip(docname_list, section_list)
...
Подробнее здесь: https://stackoverflow.com/questions/785 ... heir-paths