Python + Selenium для чтения HTML-таблицы - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь получить данные из таблицы, в которой нет идентификаторов, которые я, кажется, не могу найти при использовании Python и Selenium. Ниже приведен фрагмент HTML-кода, я пытаюсь получить имя, есть другие строки после имени, но я просто показываю имя здесь. Любые идеи, как я могу просмотреть все эти записи и получить их значения.

Я попробовал несколько примеров поиска класса Div, но не смог заставить его работать правильно. Ниже приведен необработанный HTML-код, который я пытаюсь найти.

<div class="block-content-body clear-block">
    <div class="inline-block" style="border-top:2px solid #50afb1; padding:0px;">
        <div class="table-block standard no-plumb-line">
            <table cellpadding="0" cellspacing="0">
            <tbody><tr>
            <td id="" style="padding-left:4px;padding-bottom:2px;height:25px;vertical-align:middle">             
            <div>
            Name</div> 
            </td>
        <td id="" class="text-center" style="padding-left:4px;padding-bottom:2px;height:25px;vertical-align:middle">

            <div>
                <strong>
                     David     
               </strong>
            </div>
            </td>
    </tr>

Я хочу получить поле Имя и значение Дэвид. Есть другие поля, такие как адресная строка 1 и 2 и т. Д. Я хочу получить все это.

Мой код выглядит следующим образом:

elements = driver.find_elements_by_xpath("//div[@class='table-block standard no-plumb-line']")
    print(elements)


    for num in (1,elements.length):

        text1 = driver.find_element_by_xpath("//*[@class='table-block standard no-plumb-line']/div["+num+"]/div[1]").text
        text2 = driver.find_element_by_xpath("//*[@class='table-block standard no-plumb-line']/div["+num+"]/div[2]").text        
        print(text1)
        print(text2)

1 Ответ

0 голосов
/ 11 мая 2019

Вот скрипт с требуемым xpath, который даст имя: пару значений.

rows = driver.find_elements_by_xpath("//div[@class='table-block standard no-plumb-line']/table//tr")

for rowNum in range(len(rows)):
    nameCols = driver.find_elements_by_xpath("//div[@class='table-block standard no-plumb-line']/table//tr[" + str(rowNum+1) + "]/td[descendant::div[not(strong)]]")
    for col in nameCols:
        name = col.text
        value = col.find_element_by_xpath("./following-sibling::td//strong").text
        print (name + " : " + value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...