lxml.html搜索和替换

时间:2010-11-10 06:22:28

标签: python html lxml

我需要你的帮助或建议,无论如何。

我开始阅读一些关于python的书籍,因为我遇到了这个问题:)但是我觉得学习整个语言需要很长时间。我也通过lxml.html文档浏览和搜索,但我仍然可以弄清楚如何按我想要的那样做。

我为示例创建了两个html文件,以解释我的问题。您可以在此处查看这些代码:http://pzt.me/ltbj

还有一个带有差异的屏幕截图,以便更容易看到正在发生的事情。

如果有人之前尝试做过这样的事情,或者你知道我怎么能这样做,请告诉我。

谢谢。

最佳, 约瑟夫

好的,这里是代码:

~~~~~~~~~~~
This:
~~~~~~~~~~~




New Document




<body>  
    <h2><a name="2" class="class1">2</a></h2> <a href="#top" class="class2">^ top ^</a>  
    <p><span class="class3">20</span>Sed imperdiet, lacus eu consectetur tempus, tellus metus vestibulum tortor, nec tincidunt nisl enim non tortor. <span class="class3">21</span>Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. Phasellus neque justo, aliquet non pellentesque vel, dictum non libero. Phasellus vel nulla mi, id molestie purus. Suspendisse orci ante, imperdiet at tempus id, pulvinar eu mi. Aliquam erat volutpat. <span class="class3">22</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque pretium, ligula tristique porta fringilla, mauris lectus gravida nibh, consectetur ornare lacus tellus quis sem. <span class="class3">23</span>Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor.</p>  
    <p><span class="class3">24</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. <span class="class3">25</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>  
    <p><span class="class3">26</span>Sed imperdiet, lacus eu consectetur tempus, "tellus metus vestibulum tortor, nec tincidunt nisl enim non tortor."</p>  
    <p><span class="class3">27</span></p>  
    <p>Nunc volutpat lacus;</p>  
    <p>Etiam sit amet dapibus;</p>  
    <p>Nunc consequat mauris.</p>                 
    <p><span class="class3">15</span>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc volutpat lacus a lacus dignissim sed iaculis metus consectetur. <span class="class3">17</span>Nunc consequat mauris nec ligula ullamcorper ut iaculis nibh sodales. "Nulla tincidunt lorem eu odio laoreet facilisis." <span class="class3">18</span>Aliquam erat volutpat. Curabitur sagittis, mauris quis laoreet consectetur, erat urna tincidunt augue, ut eleifend felis mi quis felis. <span class="class3">19</span>Vivamus a elit risus, consequat sagittis ligula. Nunc ut vestibulum ipsum. Curabitur at sapien vitae est egestas aliquam. <span class="class3">20</span> Donec porttitor, ligula vel venenatis posuere, purus nunc adipiscing ante, id pellentesque turpis nulla eu magna. <span class="class3">21</span>Praesent gravida, eros ut scelerisque commodo, magna quam volutpat elit, a aliquet neque ligula a mauris. <span class="class3">22</span>Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor. <span class="class3">23</span>Lorem ipsum dolor sit:</p>   
    <p>Pellentesque pretium, ligula tristique</p>  
    <p>felis viverra;</p>  
    <p>justo lobortis ut "l"</p>  
    <p>unc ut consectetur fermentum.</p>          
    <p><span class="class3">14</span>Proin et tellus felis:</p>  
    <p>Suspendisse potenti,</p>  
    <p>enim non tortor</p>  
    <p>Donec porttitor.</p>  
    <p>Morbi eleifend fermentum</p>  
    <p>Aliquam id ante.</p>  
    <p><span class="class3">15</span></p>  
    <p>Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor,</p>  
    <p>etiam ullamcorper.</p>  
    <p>vivamus interdum nulla,</p>  
    <p>odio laoreet facilisis.</p>     
    <p><span class="class3">20</span>Suspendisse potenti. Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. <span class="class3">21</span>Suspendisse potenti. Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. </p>  
</body>  

~~~~~~~~~~~~~~~~~~~~~
To become this:
~~~~~~~~~~~~~~~~~~~~~




New Document




<body>  
    <h2><a name="2" class="class1">2</a></h2> <a href="#top" class="class2">^ top ^</a>  
    <p><span class="class3">20</span>Sed imperdiet, lacus eu consectetur tempus, tellus metus vestibulum tortor, nec tincidunt nisl enim non tortor. <span class="class3">21</span>Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. Phasellus neque justo, aliquet non pellentesque vel, dictum non libero. Phasellus vel nulla mi, id molestie purus. Suspendisse orci ante, imperdiet at tempus id, pulvinar eu mi. Aliquam erat volutpat. <span class="class3">22</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque pretium, ligula tristique porta fringilla, mauris lectus gravida nibh, consectetur ornare lacus tellus quis sem. <span class="class3">23</span>Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor.</p>  
    <p><span class="class3">24</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. <span class="class3">25</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>  
    <p><span class="class3">26</span>Sed imperdiet, lacus eu consectetur tempus, "tellus metus vestibulum tortor, nec tincidunt nisl enim non tortor."</p>  
    <p><span class="class3">27</span><br />  
        Nunc volutpat lacus;<br />  
        Etiam sit amet dapibus;<br />  
        Nunc consequat mauris.</p>  
    <p><span class="class3">15</span>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc volutpat lacus a lacus dignissim sed iaculis metus consectetur. <span class="class3">17</span>Nunc consequat mauris nec ligula ullamcorper ut iaculis nibh sodales. "Nulla tincidunt lorem eu odio laoreet facilisis." <span class="class3">18</span>Aliquam erat volutpat. Curabitur sagittis, mauris quis laoreet consectetur, erat urna tincidunt augue, ut eleifend felis mi quis felis. <span class="class3">19</span>Vivamus a elit risus, consequat sagittis ligula. Nunc ut vestibulum ipsum. Curabitur at sapien vitae est egestas aliquam. <span class="class3">20</span> Donec porttitor, ligula vel venenatis posuere, purus nunc adipiscing ante, id pellentesque turpis nulla eu magna. <span class="class3">21</span>Praesent gravida, eros ut scelerisque commodo, magna quam volutpat elit, a aliquet neque ligula a mauris. <span class="class3">22</span>Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor. <span class="class3">23</span>Lorem ipsum dolor sit:<br />  
        Pellentesque pretium, ligula tristique<br />  
        felis viverra;<br />  
        justo lobortis ut "l"<br />  
        unc ut consectetur fermentum.</p>  
    <p><span class="class3">14</span>Proin et tellus felis:<br />  
        Suspendisse potenti,<br />  
        enim non tortor<br />  
        Donec porttitor.<br />  
        Morbi eleifend fermentum<br />  
        Aliquam id ante.</p>  
    <p><span class="class3">15</span><br />  
        Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor,<br />  
        etiam ullamcorper.<br />  
        vivamus interdum nulla,<br />  
        odio laoreet facilisis.</p>  
    <p><span class="class3">20</span>Suspendisse potenti. Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. <span class="class3">21</span>Suspendisse potenti. Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. </p>  
</body>  

<body> <h2><a name="2" class="class1">2</a></h2> <a href="#top" class="class2">^ top ^</a> <p><span class="class3">20</span>Sed imperdiet, lacus eu consectetur tempus, tellus metus vestibulum tortor, nec tincidunt nisl enim non tortor. <span class="class3">21</span>Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. Phasellus neque justo, aliquet non pellentesque vel, dictum non libero. Phasellus vel nulla mi, id molestie purus. Suspendisse orci ante, imperdiet at tempus id, pulvinar eu mi. Aliquam erat volutpat. <span class="class3">22</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Pellentesque pretium, ligula tristique porta fringilla, mauris lectus gravida nibh, consectetur ornare lacus tellus quis sem. <span class="class3">23</span>Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor.</p> <p><span class="class3">24</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. <span class="class3">25</span>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p> <p><span class="class3">26</span>Sed imperdiet, lacus eu consectetur tempus, "tellus metus vestibulum tortor, nec tincidunt nisl enim non tortor."</p> <p><span class="class3">27</span></p> <p>Nunc volutpat lacus;</p> <p>Etiam sit amet dapibus;</p> <p>Nunc consequat mauris.</p> <p><span class="class3">15</span>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc volutpat lacus a lacus dignissim sed iaculis metus consectetur. <span class="class3">17</span>Nunc consequat mauris nec ligula ullamcorper ut iaculis nibh sodales. "Nulla tincidunt lorem eu odio laoreet facilisis." <span class="class3">18</span>Aliquam erat volutpat. Curabitur sagittis, mauris quis laoreet consectetur, erat urna tincidunt augue, ut eleifend felis mi quis felis. <span class="class3">19</span>Vivamus a elit risus, consequat sagittis ligula. Nunc ut vestibulum ipsum. Curabitur at sapien vitae est egestas aliquam. <span class="class3">20</span> Donec porttitor, ligula vel venenatis posuere, purus nunc adipiscing ante, id pellentesque turpis nulla eu magna. <span class="class3">21</span>Praesent gravida, eros ut scelerisque commodo, magna quam volutpat elit, a aliquet neque ligula a mauris. <span class="class3">22</span>Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor. <span class="class3">23</span>Lorem ipsum dolor sit:</p> <p>Pellentesque pretium, ligula tristique</p> <p>felis viverra;</p> <p>justo lobortis ut "l"</p> <p>unc ut consectetur fermentum.</p> <p><span class="class3">14</span>Proin et tellus felis:</p> <p>Suspendisse potenti,</p> <p>enim non tortor</p> <p>Donec porttitor.</p> <p>Morbi eleifend fermentum</p> <p>Aliquam id ante.</p> <p><span class="class3">15</span></p> <p>Curabitur nibh dui, feugiat sed luctus sed, laoreet sed tortor,</p> <p>etiam ullamcorper.</p> <p>vivamus interdum nulla,</p> <p>odio laoreet facilisis.</p> <p><span class="class3">20</span>Suspendisse potenti. Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. <span class="class3">21</span>Suspendisse potenti. Nam in aliquam magna. Maecenas hendrerit fringilla dui facilisis aliquet. </p> </body>

无法包含图片。抱歉。如果要查看图像,必须在顶部看到链接。 感谢。

2 个答案:

答案 0 :(得分:2)

使用BeautifulSoup解析文档并在处理完毕后重新创建它。这是最简单的事情。我不会将lxml用于你想要做的事情。

请在此处查看有关如何添加和删除标记的示例:

答案 1 :(得分:1)

如果你真的那么短,你可以在阅读Dive Into Pythonhttp://diveintopython.net/html_processing/index.html)第8章后完成任务。

唉,我强烈建议你从本书的一开始就开始。

正则表达式(第7章同一本书)也可能有很大帮助。我还不太明白你想要完成什么。将<p></p>代码替换为<br/>

无论如何要查看smgllibre模块。