Я выскабливаю страницу 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())
Я никогда не использовал pyquery, но источник синтаксической ошибки в том, что лямбды в Python несколько ограничены, вы можете использовать только одно выражение внутри (так что никаких выражений типа print). Вы можете обойти это ограничение с помощью функции, например:
def my_print(x):
print x
formwraps.each(lambda e: my_print(e("h3").text()))