【发布时间】:2013-12-18 01:01:42
【问题描述】:
我正在尝试使用 lxml 从字符串中读取 html,然后尝试查找所有 img 标签,更新图像 src 的属性并在找到的每个图像周围添加超链接
这样,
<img src="old-value" />
会这样
<a href=""><img src="new-value" /></a>
我面临的问题是两个,首先是使用 etree.HTML 加载 html 字符串,由于某种原因,它正在向 html 本身添加 html 标记和 body 标记。有没有办法加载它而不自动导致这种情况发生?
另一个问题无法解决,如何在图像标签周围添加超链接元素,我尝试了以下但它会在 img 标签内添加超链接元素
tree = etree.HTML(self.content)
imgs = tree.xpath('.//img')
thm = "new-value"
for img in imgs:
img.set('src', thm)
a = etree.Element('a', href="#")
img.insert(0, a)
谁能给点建议?
更新:
我刚刚尝试了@Alko 提供的方法并且效果很好,但是它正在使用的内容类型存在问题。
img 标签位于 p 标签内,如下例所示
<html><body><p><img src="/public_media/cache/66/ed/66edd1c01e3027ba18bef9244ca8e8b4.jpg?id=31"/>jshjksh skjhs jksh skjhsj ksh jkshs kjhs kjsh sjkhs khs ksh skh skh skjh skjh skjh ksjh ksh skhs kjsh skjh skhs khs kjsh skjh skjhs kshk sjh skjhs kjsh skjh skjh ksj ksjh jsk hskjh s</p><p>jshjksh skjhs jksh skjhsj ksh jkshs kjhs kjsh sjkhs khs ksh skh skh skjh
skjh skjh ksjh ksh skhs kjsh skjh skhs khs kjsh skjh skjhs kshk sjh
skjhs kjsh skjh skjh ksj ksjh jsk hskjh s</p></body></html>
当我运行给定的解决方案时发生了什么,在段落结尾之后添加了结束标记。
【问题讨论】:
-
很高兴您现在开始使用
LXML。您能否接受您从中获得此想法/知识的答案 - 因为它解决了您替换src值的问题:stackoverflow.com/questions/20595735/… -
我刚刚做了,谢谢乔恩 :).. 感谢您的意见