Como un servicio público a la gente que puede ser tan vago como yo. Aquí hay un código de arriba que puedes ejecutar.
from lxml import etree
def get_text1(node):
result = node.text or ""
for child in node:
if child.tail is not None:
result += child.tail
return result
def get_text2(node):
return ((node.text or '') +
''.join(map(get_text2, node)) +
(node.tail or ''))
def get_text3(node):
return (node.text or "") + "".join(
[etree.tostring(child) for child in node.iterchildren()])
root = etree.fromstring(u"<td> text1 <a> link </a> text2 </td>")
print root.xpath("string()")
print root.xpath("text()")
print get_text1(root)
print get_text2(root)
print etree.tostring(root, method = "text")
print etree.tostring(root, method = "xml")
print get_text3(root)
de salida es:
snowy:rpg$ python test.py
text1 link text2
[' text1 ', ' text2 ']
text1 text2
text1 link text2
text1 link text2
<td> text1 <a> link </a> text2 </td>
text1 <a> link </a> text2
Esta es una forma de hacerlo (fragmento de código de mi pequeño procesador de raspado de python). Me pregunto si esto es un error lxml? – user522034
He aquí el fragmento de código: – user522034
si element.tag == "td": \t \t \t \t hijos = element.getchildren() \t \t \t \t si len (niños)> 0: \t \t \t \t \t topic = (+ element.text niños [0] .tail) \t \t \t \t otra cosa: \t \t \t \t \t topic = eleme Nuevo Testamento.texto \t \t \t \t print ("\ tTópico: \ t \ t% s"% tema) – user522034