2012-12-28 9 views
14

私はPyQueryを使用しており、リンクのリストを印刷したいのですが、PyQuery構文の各リンクからhref属性を取得する方法を理解することはできません。PyQueryで属性を取得していますか?

これは私のコードです:

e = pq(url=results_url) 
    links = e('li.moredetails a') 
    print len(links) 
    for link in links: 
    print link.attr('href') 

これは10を印刷し、その後、次のエラーを与える:

AttributeError: 'HtmlElement' object has no attribute 'attr' 

は私が間違って何をしているのですか? jQueryの、リンクアップラップのように

答えて

23

PyQueryがlxmlをラップするので、あなたは属性にアクセスするためにElementTree APIを使用します。

また
e = pq(url=results_url) 
for link in e('li.moredetails a'): 
    print link.attrib['href'] 

、いかなる見つかっにPyQueryのAPIを使用します要素を、pq()呼び出しでラップし、jQuery $()またはjQuery()を使用してDOM要素をラップする方法をエコーし​​ます。

print pq(link).attr('href') 

または

print pq(link).attr['href'] 

属性をaccessessするために、よりニシキヘビ方法について。

あなたは可能性も代わりPyQuery要素を返す代わりに.items()方法をループ、:

e = pq(url=results_url) 
for link in e('li.moredetails a').items(): 
    print link.attr['href'] 
+0

はどうもありがとうございました。 – Richard

+2

pq(リンク).attr.hrefも動作します – gawel

+0

'pq(...)。attr()'メソッドは文書化されていますか? APIドキュメントには表示されません。https://pythonhosted.org/pyquery/api.html –

2

e = pq(url=results_url) 
links = e('li.moredetails a') 
print len(links) 
for link in links: 
    print pq(link).attr('href') 
関連する問題