find_elements_by_xpath () не производит желаемый вывод очищения селен питона - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь найти tr по классу .tableOne. Вот мой код:

browser = webdriver.Chrome(executable_path=path, options=options)
cells = browser.find_elements_by_xpath('//*[@class="tableone"]')

Но вывод переменной cells равен [], пустой массив.

Вот HTML-код страницы:

<tbody class="tableUpper">
    <tr class="tableone">
        <td><a class="studentName" href="//www.abc.com"> student one</a></td>
        <td><a href="//www.abc.com/overview"> <span class="id_one"></span> <span class="long">Place</span> <span class="short">Place</span></a></td>
        <td class="hide-s">
            <span class="state"></span> <span class="studentState">student_state</span>
        </td>
    </tr>
    <tr class="tableone">..</tr>
    <tr class="tableone">..</tr>
    <tr class="tableone">..</tr>
    <tr class="tableone">..</tr>
</tbody>

1 Ответ

0 голосов
/ 13 ноября 2018

Пожалуйста, попробуйте это:

import re

cells = browser.find_elements_by_xpath("//*[contains(local-name(), 'tr') and contains(@class, 'tableone')]")

for (e in cells):
    insides = e.find_elements_by_xpath("./td")
    for (i in insides):
        result = re.search('\">(.*)</', i.get_attribute("outerHTML"))
        print result.group(1)

То, что это делает, получает все элементы tr, которые имеют класс tableone, затем перебирает каждый элемент и перечисляет все tds. Затем перебирает externalHTML каждого td и обрезает каждую строку, чтобы получить текстовое значение. Я думаю, он совершенно не определен и будет возвращать пустые строки. Возможно, вам понадобится еще немного поработать над конечным продуктом.

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