Tôi đang cạo một trang với pyquery của Python, và tôi bị nhầm lẫn bởi các kiểu nó trả về, và đặc biệt là cách lặp qua danh sách kết quả.Lặp lại các đối tượng trong pyquery
Nếu HTML của tôi trông hơi như thế này:
<div class="formwrap">blah blah <h3>Something interesting</h3></div>
<div class="formwrap">more rubbish <h3>Something else interesting</h3></div>
Làm thế nào để tôi nhận được bên trong <h3>
thẻ, từng người một để tôi có thể xử lý chúng? Tôi đang cố gắng:
results_page = pq(response.read())
formwraps = results_page(".formwrap")
print type(formwraps)
print type([formwraps])
for my_div in [formwraps]:
print type(my_div)
print my_div("h3").text()
này tạo ra:
<class 'pyquery.pyquery.PyQuery'>
<type 'list'>
<class 'pyquery.pyquery.PyQuery'>
Something interesting something else interesting
Dường như không có sự lặp lại thực tế đang diễn ra. Làm thế nào tôi có thể rút ra từng phần tử riêng lẻ?
Câu hỏi bổ sung từ newbie: các dấu ngoặc vuông xung quanh [a]
đang hoạt động như thế nào? Có vẻ như nó chuyển đổi một đối tượng Pyquery đặc biệt thành một danh sách. Có phải []
là một toán tử Python chuẩn không?
------ CẬP NHẬT --------
Tôi đã tìm thấy 'mỗi' function in the pyquery docs. Tuy nhiên, tôi không hiểu làm thế nào để sử dụng nó cho những gì tôi muốn. Nói rằng tôi chỉ muốn in nội dung của số <h3>
. Điều này tạo ra một lỗi cú pháp: tại sao?
formwraps.each(lambda e: print e("h3").text())