Как получить текст дочернего элемента - PullRequest
0 голосов
/ 28 декабря 2018

На этой странице , я хочу ввести «посмотрел» или «пропал», нажать кнопку «spaCy Word Lemmatize», а затем найти «Результат анализа» на странице результатов.У меня есть код, чтобы сделать все, но я не могу изолировать результат.

Original Text    Analysis Result
-------------    ---------------
looked           look
gone             go

Это HTML-результат для 'look':

<div class="span5 offset1">
    <h4>Original Text</h4>
    <p>
    looked
    </p>
</div>
<div class="span5">
    <h4>Analysis Result</h4>
    <p>
    look
    </p>
</div>

Это мой код

array = []
myText = ["looked", "gone"]  # I post this array to website.

for a in range(0, len(myText)):

    x = driver.find_element_by_class_name("span5")
    array.append(x.text)

print b -> [u'Original Text\nlooked', u'Original Text\ngone']

Как я могу получить только результат "look" или "go"?

Ответы [ 4 ]

0 голосов
/ 28 декабря 2018

Когда вы публикуете следующий массив на веб-сайте:

myText = ["looked", "gone"] 

В соответствии с результатом HTML DOM для извлечения текстов, например look , go и т. Д., Вы можете использовать следующее решение:

my_elements = driver.find_elements_by_css_selector("div.span5:not(.offset1) p")
my_array = [my_element.text for my_element in my_elements]
print(my_array)
0 голосов
/ 28 декабря 2018

Для этого вы также можете использовать следующий селектор CSS:

...
text = driver.find_element_by_css_selector(".span5>p").text
...

Вы можете оптимизировать свой код:

array = []
elements = driver.find_elements_by_css_selector(".span5>p")

for element in elements:

    array.append(element.text)

или более Pythonic:

array = [element.text for element in elements]

Надеюсь, это поможет вам!

0 голосов
/ 28 декабря 2018

Я предполагаю, что элементы div являются дочерними для другой сущности, это на Java, может быть, вы знаете, как сделать это на Python.Я создал список WebElements на основе className и tagName - в вашем случае тег p, после чего я печатаю результаты.

List<WebElement> listofWords= driver.findElement(By.className("other_entity_ClassName_or_something_else")).findElements(By.tagName("p"));
    for (int i = 0; i < listofWords.size(); i++) {
        System.out.println(listofWords.get(i).getText());
    }

Спасибо,

0 голосов
/ 28 декабря 2018

Ответ: найдите все элементы, содержащие определенный класс и дочерний тег p

element = driver.find_element_by_xpath('//div[contains(@class, 'span5')]/p')
text = element.text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...