我想用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。
任何想法?或任何其他方法?
感谢
答案 0 :(得分:2)
由于PyQuery意味着您镜像jQuery,因此this question可能是相关的。长话短说,使用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>'
答案 1 :(得分: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'}