2012-12-28 34 views
14

Tôi đang sử dụng PyQuery và muốn in danh sách các liên kết, nhưng không thể tìm ra cách lấy thuộc tính href từ mỗi liên kết trong cú pháp PyQuery.Lấy các thuộc tính trong PyQuery?

Đây là mã tôi:

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

này in 10, sau đó cung cấp cho các lỗi sau:

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

Tôi đang làm gì sai?

Trả lời

23

PyQuery kết thúc tốt đẹp lxml, vì vậy bạn sử dụng ElementTree API để truy cập các thuộc tính:

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

Ngoài ra, để sử dụng API PyQuery trên bất kỳ tìm thấy phần tử, bọc phần tử trong cuộc gọi pq(), lặp lại cách bạn cần sử dụng jQuery $() hoặc jQuery() để bao bọc các phần tử DOM:

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

hoặc

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

kiếm một cách pythonic hơn để accessess các thuộc tính.

Bạn cũng có thể lặp qua .items() phương pháp thay vào đó, mà trả về yếu tố PyQuery thay vì:

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

Thank you very much. – Richard

+2

pq (liên kết) .attr.href cũng hoạt động – gawel

+0

Phương thức 'pq (...). Attr()' có được ghi lại không? Tôi không thấy nó trong tài liệu API: https://pythonhosted.org/pyquery/api.html –

2

Như trong jQuery, quấn liên kết lên:

e = pq(url=results_url) 
links = e('li.moredetails a') 
print len(links) 
for link in links: 
    print pq(link).attr('href') 
Các vấn đề liên quan