PyQueryで属性を取得するには?質問する

PyQueryで属性を取得するには?質問する

hrefPyQuery を使用しており、リンクのリストを印刷したいのですが、 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'

何が間違っているのでしょうか?

ベストアンサー1

PyQueryラップlxml、つまりエレメントツリー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']

属性にアクセスするためのより Python 的な方法。

.items()代わりにメソッドをループして、PyQuery 要素を返すこともできます。

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

おすすめ記事