Я могу подсчитать количество отдельных элементов, особенно <li>
на веб-странице, которую я пытаюсь царапать .
Но я хочу, чтобы он считал <li>
элементов для каждого <ul>
на странице.
Это то, что я пытался посчитать все <li>
на странице, простой
list = driver.find_elements_by_tag_name("li")
print(len(list))
У меня есть страница с большим списком, как показано ниже, точно такое же имя класса, все то же самое, кроме текста внутри тегов <li>
.
<ul class = "tags">
<li class = "tag"><a rel = "tag" class = "term" href = "/site1">Flight</a></li>
<li class = "tag"><a rel = "tag" class = "term" href = "/site2">Action</a></li>
<li class = "tag"><a rel = "tag" class = "term" href = "/site3">Gravity</a></li>
</ul>
Я хочу подсчитать количество элементов внутри каждого тега на странице.
Попробуйте использовать find_element_by_xpath
вместо find_elements_by_tag_name
Добро пожаловать в StackOverflow. Пожалуйста, прочтите и следуйте инструкциям по размещению сообщений в справочной документации, предложенным при создании этой учетной записи. Здесь применяется Минимальный, полный, проверяемый пример. Мы не сможем эффективно помочь вам, пока вы не опубликуете свой код MCVE и точно не укажете проблему. Мы должны иметь возможность вставить ваш опубликованный код в текстовый файл и воспроизвести указанную вами проблему. StackOverflow не является ресурсом для проектирования, кодирования, исследований или учебных пособий.
Даже если бы я использовал xpath, как я должен получить счет для каждого <ul>?
Вам нужно определить свои ul
разделы, а затем вложить в них li
счетчики. Вы не показали ни эту попытку, ни ее результаты.
Для ... подсчитывать элементы <li> для каждого <ul> на странице... вам нужно было обновить вопрос, добавив еще немного внешнего HTML.
Попробуйте следующий код. Сначала он найдет все теги <ul>
, а затем найдет связанные теги <li>
.
elements=driver.find_elements_by_tag_name('ul')
#print(len(elements))
for ele in elements:
print(len(ele.find_elements_by_xpath("./li")))
Выход:
2
3
4
Предлагаемый код в порядке. Работает хорошо, но вместо xpath я бы предпочел другие методы, потому что у xpath есть несоответствия.
Вы можете просто заменить второй локатор на li
в качестве селектора CSS, и он будет работать нормально.
Возможно, рассмотрите Красивый суп для этого. Selenium, насколько я знаю, больше касается взаимодействия с пользовательским интерфейсом и выполнения утверждений, а не извлечения информации из него. Хотя я могу ошибаться.