我的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"
我想从标签中完全删除宽度和高度。我可以使用替换和删除标签,但高度和宽度值不断变化,因此如何干净地删除它有点令人困惑。
答案 0 :(得分:3)
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">
答案 1 :(得分:1)
如果您只有这样的单个元素,您应该能够使用基于正则表达式的搜索并轻松替换。
请参阅执行此操作的re.sub()
函数。
作为一个起点,我尝试使用类似的东西:
stripped = re.sub(r'(height|width)=\"\d+\"', "", old_html)
您可以进一步改进以支持属性值的单引号,而不是假设该值将是所有数字,依此类推。