如何在Python中使用pyquery修改节点属性
我想用pyquery来做这个。
比如说:
html='<div>arya stark<img src="1111"/>ahahah<img src="2222"/></div>'
a=PyQuery(html)
我想把HTML修改成
<div>arya stark<img src="aaaa"/>ahahah<img src="bbbb"/></div>
换句话说,我只需要改变标签的src属性,然后得到修改后的HTML。
有什么想法吗?或者其他方法?
谢谢
2 个回答
0
像这样:
import pyquery
html = '<div>arya stark<img src="1111"/>ahahah<img src="2222"/></div>'
tree = pyquery.PyQuery(html)
tree('img:first').attr('src', 'cccc')
print str(tree)
<div>arya stark<img src="cccc"/>ahahah<img src="2222"/></div>
如果你想对一组选中的元素应用一个函数,可以使用.each()这个方法。不过要注意,传给这个函数的是原始的元素:
>>> from __future__ import print_function
>>> tree('img').each(lambda i, n: print(n.attrib))
{'src': 'cccc'}
{'src': '2222'}
2
因为PyQuery是为了模仿jQuery,所以也许这个问题会对你有帮助。简单来说,你可以使用attr()
这个方法:
>>> html='<div>arya stark<img src="1111"/>ahahah<img src="2222"/></div>'
>>> a=PyQuery(html)
>>> a.outerHtml()
'<div>arya stark<img src="1111">ahahah<img src="2222"></div>'
>>> for img in a('img'):
... PyQuery(img).attr('src', "whatever")
...
[<img>]
[<img>]
>>> a.outerHtml()
'<div>arya stark<img src="whatever">ahahah<img src="whatever"></div>'