Если вы хотите получить этот текст, исключая текст узла <b>
, вам нужно использовать следующий XPath:
//div[starts-with(@id, 'popover-')]
, который будет идентифицировать узел div, а затем с помощью метода find_elements_by_xpath()
,Вы можете получить весь текст из узла div.Попробуйте следующий код:
elements = driver.find_elements_by_xpath("//div[starts-with(@id, 'popover-')]")
for element in elements:
print(element.text)
Обновление:
Я подозреваю, что описанный выше метод может не работать, и мы не сможем определить / получить эти данные с помощьюобычные методы - в этом случае вам нужно использовать JavaScriptExecutor для получения данных, как показано ниже:
driver = webdriver.Chrome('chromedriver.exe')
driver.get("file:///C:/NotBackedUp/SomeHTML.html")
xPath = "//div[starts-with(@id, 'popover-')]"
elements = driver.find_elements_by_xpath(xPath)
for element in elements:
lenght = int(driver.execute_script("return arguments[0].childNodes.length;", element));
for i in range(1, lenght + 1, 1):
try:
data = str(driver.execute_script("return arguments[0].childNodes["+str(i)+"].textContent;", element)).strip();
if data != None and data != '':
print data
except:
print "=> Can't print some data..."
Поскольку ваш сайт написан на другом языке, отличном от английского, вы не сможете распечатать / получить некоторыеdata.
Для получения данных о конкретных дочерних узлах вам нужно сделать следующее:
from selenium import webdriver
driver = webdriver.Chrome('chromedriver.exe')
driver.get("file:///C:/NotBackedUp/SomeHTML.html")
xPath = "//div[starts-with(@id, 'popover-')]"
elements = driver.find_elements_by_xpath(xPath)
for element in elements:
# For print b1 text
b1Text = driver.execute_script("return arguments[0].childNodes[2].textContent", element);
print b1Text
# For printing b2 text
b2Text = driver.execute_script("return arguments[0].childNodes[6].textContent", element);
print b2Text
print("=> Done...")
Надеюсь, это поможет ...