我正在使用PyQuery并希望打印链接列表,但无法弄清楚如何从PyQuery语法中的每个链接获取href
属性。
这是我的代码:
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'
我做错了什么?
答案 0 :(得分:28)
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']
以更加pythonic的方式来访问属性。
您也可以循环使用.items()
方法,而不是返回PyQuery元素:
e = pq(url=results_url)
for link in e('li.moredetails a').items():
print link.attr['href']
答案 1 :(得分:2)
在jQuery中,将该链接包起来:
e = pq(url=results_url)
links = e('li.moredetails a')
print len(links)
for link in links:
print pq(link).attr('href')