2011-04-01 41 views
2

我想用pyquery來做到這一點。如何使用pyquery修改python中的節點屬性

例如:

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。

任何想法?或任何其他方法?

感謝

回答

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>' 
+0

肯定的,但選擇(IMG)返回一個列表IMG,我想修改的全html.thanks – alwx 2011-04-01 19:48:25

+0

我添加編輯了一段代碼。要取回包裝HTML,請使用['outerHtml()'](http://packages.python.org/pyquery/api.html#pyquery.pyquery.PyQuery.outerHtml)方法。 – 2011-04-01 20:23:08

+0

是的~~~~,就這樣 – alwx 2011-04-02 05:11:50

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> 

要應用功能的選擇,你可以使用。每(),但要注意,裸元素傳遞給函數:

>>> from __future__ import print_function 
>>> tree('img').each(lambda i, n: print(n.attrib)) 
{'src': 'cccc'} 
{'src': '2222'} 
相關問題