繁体   English   中英

如何使用Python从HTML剥离高度和宽度标签?

[英]How to strip height and width tags from a html using Python?

我的html包含如下图像标签:

 <img alt="Alla_dj01" height="333" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2013-02-01/kjyqxkaqBICwbidlzEeCurhwpcilIGzDDcFrmlCcGDkftlbsedenbAGpFdbo/ALLA_DJ01.jpg.scaled500.jpg" width="500"

我想从标签中完全删除宽度和高度。 我可以使用replace和remove标记,但是高度和宽度值会不断变化,因此如何清除它有点令人困惑。

In [40]: import lxml.html as lh

In [41]: html = '''<img alt="Alla_dj01" height="333" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2013-02-01/kjyqxkaqBICwbidlzEeCurhwpcilIGzDDcFrmlCcGDkftlbsedenbAGpFdbo/ALLA_DJ01.jpg.scaled500.jpg" width="500"'''

In [42]: doc = lh.fromstring(html)

In [43]: for img in doc.xpath('//img'):
    ...:     for a in ['width','height']:
    ...:         img.attrib.pop(a)  # img.attrib is basically a dict
    ...:         

In [44]: print lh.tostring(doc,pretty_print=True)
<img alt="Alla_dj01" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2013-02-01/kjyqxkaqBICwbidlzEeCurhwpcilIGzDDcFrmlCcGDkftlbsedenbAGpFdbo/ALLA_DJ01.jpg.scaled500.jpg">

如果只有这样的单个元素,则应该能够使用基于正则表达式的搜索并非常容易地进行替换。

请参见re.sub()函数。

作为起点,我将尝试使用以下方法:

stripped = re.sub(r'(height|width)=\"\d+\"', "", old_html)

您可以进一步改善此属性,以支持属性值的单引号,而不是假定该值将是全数字,依此类推。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM