Lxml python загружает HTML-строку без заголовка и тела и добавляет элемент вокруг целевых элементовPython

Программы на Python
Ответить
Anonymous
 Lxml python загружает HTML-строку без заголовка и тела и добавляет элемент вокруг целевых элементов

Сообщение Anonymous »

я пытаюсь использовать lxml для чтения html из строки, а затем пытаюсь найти все теги img, обновить атрибут src изображения и добавить гиперссылку вокруг каждого найденного изображения
так вот,

Код: Выделить всё

[img]old-value[/img]
это будет

Код: Выделить всё

[img]new-value[/img]

проблема, с которой я столкнулся, состоит из двух: во-первых, я использую etree.HTML для загрузки строки html, которая по какой-то причине добавляет тег html и тег body к самому html. Есть ли способ загрузить его, не вызывая этого автоматически?
Еще одна проблема, которую я не могу решить: как добавить элемент гиперссылки вокруг тега изображения. Я попробовал приведенное ниже, но он добавит элемент гиперссылки внутри тега img.

Код: Выделить всё

tree = etree.HTML(self.content)
imgs = tree.xpath('.//img')
thm = "new-value"
for img in imgs:
img.set('src', thm)
a = etree.Element('a', href="#")
img.insert(0, a)
Кто-нибудь может посоветовать?
обновление:
Я только что попробовал подход, предложенный @Alko, и он работает хорошо, но у него есть проблема с типом контента, который я использую.
Тег img расположен внутри тегов p, как показано в примере ниже.

Код: Выделить всё

[img]/public_media/cache/66/ed/66edd1c01e3027ba18bef9244ca8e8b4.jpg?id=31[/img]
jshjksh skjhs jksh skjhsj ksh jkshs kjhs kjsh sjkhs khs ksh skh skh skjh skjh skjh ksjh ksh skhs kjsh skjh skhs khs kjsh skjh skjhs kshk sjh skjhs kjsh skjh skjh ksj ksjh jsk hskjh s

jshjksh skjhs jksh skjhsj ksh jkshs kjhs kjsh sjkhs khs ksh skh skh skjh
skjh skjh ksjh ksh skhs kjsh skjh skhs khs kjsh skjh skjhs kshk sjh 
skjhs kjsh skjh skjh ksj ksjh jsk hskjh s

Что происходит, когда я запускаю данное решение, закрывающий тег добавляется после окончания абзаца.

Подробнее здесь: https://stackoverflow.com/questions/206 ... round-targ
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»