Как найти максимальное значение xpath в python

#python #selenium #xpath

#python #selenium #xpath

Вопрос:

Я работаю над очисткой данных в Selenium с использованием xpaths. Я хочу выполнить итерацию по xpath с разными числовыми значениями. Например, я хочу выполнить итерацию по следующему xpath: "//*[@id="content-core"]/div/p[i]" со i значениями 1 n .

Есть ли функция или код для поиска n максимального числа в заданном уравнении Xpath, чтобы я знал, когда остановить цикл?

Большое спасибо!

Комментарии:

1. Это полностью зависит от веб-сайта. Используйте beautifulsoup для анализа HTML и выяснения, сколько <p> s в этом конкретном <div> .

Ответ №1:

Вы можете использовать try-except блок, подобный этому:

 from selenium.common.exceptions import NoSuchElementException

i = 1

while True:
    try:
        xpath = f"//*[@id="content-core"]/div/p[{i}]"
        driver.find_element_by_xpath(xpath)
        i  = 1

    except NoSuchElementException: 
        break
  

Ответ №2:

Найдите элементы len, а затем выполните цикл по ним.

 n=len(driver.find_elements_by_xpath("//*[@id='content-core']/div/p"))
for i in range(n):
  try:
    driver.find_element_by_xpath("//*[@id='content-core']/div/p[" i "]")
  except:
    break
  

Ответ №3:

Вы можете использовать count для его решения. Например, предположим, что у вас есть extract html из an url , следующим образом:

 import requests
from lxml import etree

response = requests.get(url)
data = response.text
html = etree.HTML(data)
  

Затем вы можете получить длину метки p .

 len = int(html.xpath('count(//*[@id="content-core"]/div//p)'))