Как разделить вывод оператора xpath - PullRequest
2 голосов
/ 30 апреля 2019

Я новичок в Python и Selenium и собираю информацию с сайта.Некоторые элементы не имеют надлежащего класса div для обеспечения нормальной работы скрипта.Мне нужно отделить вывод оператора xpath, чтобы он не содержал текстовое значение из части h2.

Я уже переписал тело цикла и оператор xpath.

elif driver.find_element_by_xpath("//span[@class='italic']").text == "Chapter":
            test = driver.find_element_by_xpath("//a[@class='strong']")
            test.click()
            elem4 = driver.find_elements_by_xpath('//div[@class="work_identifiers_type_txt"] | //h2[@class="font18 strong inline"]')[0].text
            elem5 = f"ISBN={{{f'{elem4}'}}}}}"
            driver.back()
            file.write(f'{elem2}, ' + f'{elem5}')
            file.write('\n\n,\n')
            driver.back()
            driver.implicitly_wait(5)

Divс помощью h2:

<div class="col-sm-12">
                <h2 class="font18 strong inline">
                </h2>
                <span class="italic">
</span>
            </div>

Я хочу записывать текст только из первой части инструкции xpath (div) в переменную (и файл).Во второй части этой строки должна быть предусмотрена возможность записи чего-либо в файл, например.

            file.write(f'{elem2}')
            file.write('\n\n,\n')
            driver.back()
            driver.implicitly_wait(5)

На данный момент оператор xpath поочередно записывает в файл один раз div и один раз значение h2 (если один тег отсутствует).

1 Ответ

1 голос
/ 01 мая 2019

Попробуйте получить текст h2 напрямую, используя ниже.

h2Text= driver.find_element_by_xpath("//h2[@class='font18 strong inline']").text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...