Für die folgende Eingabe ändert lxml
die div
, als ob es versteht, dass div
nicht innerhalb sein kann.lxml erkennt leeres div nicht wie erwartet
Kann mir jemand sagen, wie man nur die <div></div>
für diese Art von Eingabe bekommen? Ich möchte den Eingabe-HTML-Code korrigieren.
Muss ich zu BeautifulSoup
wechseln?
from lxml import etree
html_string = """
<html>
<head>
<title></title>
</head>
<body>
<p align="center">
<div></div>
This line should be centered.
</p>
<table>
<tbody>
<tr>
<td>
<div></div>
</td>
</tr>
</tbody>
</table>
</body>
</html>
"""
html_element = etree.fromstring(html_string)
page_break_elements = html_element.xpath("//div")
(Pdb) etree.tostring(html_element[1][0][0])
b'<div/>\n This line should be centered.\n '
Ich möchte nur das untere Element, um es zu bewegen.
<div></div>
Für alle neugierig sind dies page-break div
s für die PDF-Erzeugung verwendet <div style="page-break-after:always"></div>
die Seitenumbrüche angeben. Ich bekomme eine Eingabe von TinyMCE, die es nicht richtig positioniert, also versuche ich es auf das body
Element zu verschieben.
Ausgabe
Wunschfrom lxml import etree
html_string = """
<html>
<head>
<title></title>
</head>
<body>
<div></div>
<p align="center">
This line should be centered.
</p>
<div></div>
<table>
<tbody>
<tr>
<td>
</td>
</tr>
</tbody>
</table>
</body>
</html>
"""
Ich benutzte BeautifulSoup und schrieb einen Code, um mein Ziel zu erreichen http://codereview.stackexchange.com/questions/136402/correcting-a-div-use-for-page-break-inside-p-by-moving- to-the-body-element – Nishant
Können Sie noch ein paar divs hinzufügen und was erwarten Sie als Ausgabe? –
Ja, jedes solche Div sollte auf Körper-Ebene verschoben werden. Das ist meine gewünschte Ausgabe. Meine Code-Review-Lösung scheint, aber ich muss die Lxml-Lösung testen. – Nishant