Вам, вероятно, не нужен цикл для достижения того, что вы ищете.
findall() #It returns a list
Вы можете просто сделать, как
product_sizes.find_all('li')
, который возвращает список в качестве вывода, а затем вы можете нарезать в соответствии с вашими требованиями. Например, произнесите 2nd Element затем
print(product_sizes.find_all('li')[1].text)
Наконец, ваш код будет выглядеть следующим образом
product_sizes = view_product.find('dl', id='dl_1')
print(product_sizes.find_all('li')[1].text) #Prints second element.
Вывод:
36
Правильная общая картина, неправильная реализация детализирует в первом абзаце.
А "Первый Респондент" в NibFile является Объектом †¦
нет, на самом деле, Первый Респондент nil
. Соединение управления UI (например, кнопка) Первому Респонденту в пере эквивалентно [control setTarget:nil]
в коде.
причина Первого поддельного объекта Респондента в окне пера состоит в том, что в IB Вы ставите цель и действие одновременно (ctrl-drag для предназначения, выберите действие из всплывающего меню). Вы не можете установить действие и оставить целевой сброс, как Вы может в коде, так для установки его на nil
, необходимо сделать так явно. Это - то, для чего Первый Респондент: это - поддельный объект, представляющий nil
, таким образом, можно поставить цель и действие тем же путем, Вы сделали бы при установке его на определенную реальную цель.
, Конечно, Вы не можете использовать это для установки чего-либо еще на nil
, только цели представлений. Можно только использовать его еще для значения Первого Респондента, ничто.
Поэтому, если пользователь нажимает на управление UI, Nib устанавливает †¦
, перо ничего не делает. Это - просто сушивший сублимацией набор объектов, хранивших на диске. Даже когда Вы инстанцируете NSNib, все, что Вы делаете, размораживает некоторые объекты. Это - объекты, которые делают вещи.
В случае под рукой при разархивировании управления, Вы соединились с Первым Респондентом от пера, его цель поставлена к nil
(помните, это - каков Первый Респондент действительно: цель nil
). Когда цель управления nil
, и пользователь нажимает на нее, она отправляет свое действие в то, какой бы ни респондент является первым респондентом в то время.
Ваши вторые и третьи абзацы корректны.
Ваше понимание является неполным. цепочка респондента включает больше, чем, о чем мы обычно думали бы как "средства управления UI", включая самое главное текущий документ. Одно из больших преимуществ - то, что это позволяет Вам взаимодействовать с концептуально "текущий" безотносительно — текущее окно, поле текущего текста, текущий документ, и т.д. — без большого бездельничания для нахождения его.
Проверьте эту ссылку, она делает хорошее объяснение задания. Я думаю, что у Вас есть суть его:
http://cocoadev.com/FirstResponder
Из источника:
FirstResponder является первым объектом в цепочке респондента, которой дают возможность ответить на событие.
Ответчиком называется любой объект, который будет выполнять действия (вызывать функции) при возникновении событий (например, щелчок по кнопкам). Цепочка отвечающего - это последовательность объектов, каждый из которых содержится друг в друге - например, кнопка внутри панели внутри окна. При возникновении события мы выполняем итерацию по цепочке до тех пор, пока не найдем объект, для которого не установлено значение nil
, и который, таким образом, может ответить на событие. Поэтому вместо того, чтобы предоставлять объект-ответчик для каждой кнопки в окне, мы можем предоставить один ответчик для всего окна. Первый ответчик - это просто первый объект внутри цепочки отвечающего - связывание события с первым ответчиком позволяет событию пройти вверх по цепочке.