Не могли бы вы пояснить хотя бы некоторый контекст, почему это требуется.
Кажется, что проблема заключается в определении смещения между фактическим исходным кодом html и содержащимся текстом (с учетом смещения символа исходного кода, введенноготег до и после).Я сам не пользуюсь этой библиотекой, но здесь все сказано.
Кажется, проблема полностью решается с помощью модуля Python re
.Я знаю, что у soup есть некоторые подсказки об их собственном использовании поиска строк re
, но это не очень подробно, поэтому вместо этого я буду обсуждать библиотеку python re, так как она выглядит примерно так:
это разрешение предполагает и основывается на предпосылке, что содержащийся внутри тега в исходном коде текст является уникальным
Программно создайте регулярное выражение, например: "<TAGNAME [\w ]*> (STRING CONTENTS)<TAGNAME/>"
.Это регулярное выражение использует группы, так что с помощью match.group(0).start()
вы можете получить начальную позицию всего тега в исходном коде, а с помощью match.group(1).start()
вы получите позицию STRING CONTENTS
.Найдя разницу между этими двумя позициями, вы сможете сгенерировать хранимое целое число смещения, которое вы можете просто использовать вместо создания сопоставления словаря (тем не менее, смещение можно использовать для создания словаря).
NB:Имея ссылку на этот ответ , я узнал, что суп (the output of beautifulsoup(html, 'html.parser'))
изменяет структуру входной строки, поэтому не будет надежным в использовании по сравнению с литеральным исходным кодом нетронутой строки