Итерация по объектам в pyquery

Я выскабливаю страницу pyquery Python, и я отчасти смущен типами, которые он возвращает, и в особенности как выполнить итерации по списку результатов.

Если мой HTML немного походит на это:

blah blah

Something interesting

more rubbish

Something else interesting

Как я получаю внутреннюю часть

теги, один за другим таким образом, я могу обработать их? Я пробую:

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() 

Это производит:




Something interesting something else interesting

Похоже, что нет никакого фактического итеративного продолжения. Как я могу вытащить каждый элемент индивидуально?

Дополнительный вопрос от новичка: каковы квадратные скобки вокруг [a] выполнение? Похоже, что это преобразовывает специальный объект Pyquery в список. [] стандартный оператор Python?

------ОБНОВЛЕНИЕ--------

Я нашел 'каждую' функцию в pyquery документах. Однако я не понимаю, как использовать его для того, что я хочу. Скажите, что я просто хочу распечатать содержание

. Это производит синтаксическую ошибку: почему?

formwraps.each(lambda e: print e("h3").text())

13
задан AP257 13 July 2010 в 10:36
поделиться

1 ответ

Я никогда не использовал pyquery, но источник синтаксической ошибки в том, что лямбды в Python несколько ограничены, вы можете использовать только одно выражение внутри (так что никаких выражений типа print). Вы можете обойти это ограничение с помощью функции, например:

def my_print(x):
    print x

formwraps.each(lambda e: my_print(e("h3").text()))
7
ответ дан 1 December 2019 в 17:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: