#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)'))