После интервала скопируйте текст внутри следующей <a>... </a> ссылки с Selenium в Python - PullRequest
0 голосов
/ 04 апреля 2020

Для получения списка веб-страниц из словаря китайских иероглифов мне нужно извлечь текст, отображаемый внутри элемента <a>...</a> сразу после элемента <span>Radical:</span>. Вот пример кода сайта:

https://www.archchinese.com/chinese_english_dictionary.html?find=松

<br> <span>»&nbsp;Radical:&nbsp;&nbsp;</span> <a target="_archchinese" class="char-effect" style="font-family: KaiTi,STKaiti,DFKai-SB,BiauKai,Arial !important;font-size:1.5em !important;color: #0000FF !important; " href="https://www.archchinese.com/chinese_english_dictionary.html?find=木">木</a>

, из которого я хочу извлечь только «木», т.е. текст, отображаемый внутри элемента <a>...</a>.

Я уже пробовал:

  • driver.find_elements_by_xpath(/html/body/div[1]/div[5]/div[2]/div[1]/div[5]/div[2]/div[2]/a[6]

, но переменная a [x] изменяется для разных страниц, в зависимости от количества ссылок, содержащихся в разделителе <div id="charDef">, который содержит несколько переменных на каждой странице китайских иероглифов. Более того, имена атрибутов, которые я предполагаю, могут быть использованы для выделения этого <a>...</a> элемента, таких как target, class, частичная ссылка и так далее c. кажется, что появляются во многих других элементах на странице, т.е. не являются уникальными.

В этом случае, как я могу просто заставить Selenium извлекать текст между <a>...</a> в элементе, который появляется сразу после элемента <span>Radical:</span>

1 Ответ

0 голосов
/ 04 апреля 2020
wait = WebDriverWait(driver, 20)
driver.get("https://www.archchinese.com/chinese_english_dictionary.html?find=%E6%9D%BE")

Старый раздел

warning = wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@id='charDetailPane']//a[6]")))
print warning.text

Обновленный раздел:

//span[contains(text(),'Radical:')]/following-sibling::a

Примечание:

Добавить ниже импортируется в ваш код

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

Вывод:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...