21

我正在使用 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'

我究竟做错了什么?

4

2 回答 2

31

PyQuery wraps 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']

以更 Pythonic 的方式访问属性。

您也可以.items()改为循环该方法,该方法返回 PyQuery 元素:

e = pq(url=results_url)
for link in e('li.moredetails a').items():
    print link.attr['href']
于 2012-12-28T13:32:35.223 回答
2

就像在 jQuery 中一样,将该链接包装起来:

e = pq(url=results_url)
links = e('li.moredetails a')
print len(links)
for link in links:
    print pq(link).attr('href')
于 2012-12-28T13:27:19.080 回答