我想使用 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>
也就是说,只需要改变img元素的src属性,就可以得到修改后的html。
任何想法或任何其他方法?
谢谢
由于 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>'
像这样的东西:
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'}