Как использовать Pyquery для изменения атрибута узла в Python - PullRequest
2 голосов
/ 01 апреля 2011

я хочу использовать 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 элемента img и получите измененный html.

какие-либо идеи? или любой другой метод?

спасибо

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

Поскольку 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>'
0 голосов
/ 02 апреля 2011

Примерно так:

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'}
...