Найти - Пользователи
Полная версия: Удалить кусок html используя xpath
Начало » Python для новичков » Удалить кусок html используя xpath
1
tfox
Всем привет
Задача может быть и простая но я с таким не сталкивался.
Как из html-кода удалить определенный узел? Используя xpath шаблон.
Ниже примерно описал алгоритм. Не знаю только библиотеку и функцию который выполнили эту операцию


import "какая_нибудь_стандартная_библиотека"
html_code = '<html><head><title>Заголовок</title></head> и так далее ...</html>'
xpath_parrent = '//title'
result = "функция_удалить"(html_code, xpath_parrent)
# теперь узла title больше нету
# можно выводить на экран
print title
GreyZmeem
Используйте lxml или xml.etree.ElementTree чтобы конвертировать ваш текст в xml.
После чего можно найти нужный вам элемент и удалить.
tfox
GreyZmeem
После чего можно найти нужный вам элемент и удалить.

А как найти элемент и удалить его?
GreyZmeem
XPath
remove Element
py.user.next
GreyZmeem
или xml.etree.ElementTree чтобы конвертировать ваш текст в xml.
для разбора html модуль xml не применяют, так как html не преобразуется в xml
в xml не допускаются незакрытые теги

поэтому там вариант только lxml.html

>>> import lxml.html
>>> 
>>> s = '<html><head><title>test</title></head></html>'
>>> 
>>> doc = lxml.html.fromstring(s)
>>> node = doc.xpath('//title')
>>> node[0].getparent().remove(node[0])
>>> lxml.html.tostring(doc)
b'<html><head></head></html>'
>>>
tfox
py.user.next
для разбора html модуль xml не применяют, так как html не преобразуется в xml
в xml не допускаются незакрытые теги

Это точно. Об этот lxml все копья сломал.

py.user.next
node.getparent().remove(node)

Подскажите. А как пройтись по всем узлам?
py.user.next
tfox
Подскажите. А как пройтись по всем узлам?
нужно через xpath найти родительский, а затем удалить его дочерние узлы
tfox
До петрив. Вот таким циклом можно.

    doc = lxml.html.fromstring(a_text)
    node = doc.xpath('//h2')
    for i in node:
        i.getparent().remove(i)
tfox
py.user.next
Спасибо Вам.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB