как получить каждый элемент в классе отдельно в селене - PullRequest
1 голос
/ 27 апреля 2019

Есть веб-сайт, который я хочу свернуть, и данные находятся во вложенных и разделенных классах и элементах.
каждая страница имеет разное количество этих классов и элементов.все, что я хочу получить данные в списке, так как каждый элемент списка является одним из данных элементов страницы.

это то, что я сделал для этого:

driver = webdriver.Chrome(chromedriver_path,chrome_options=chrome_options)
driver.get(my_path_to_website)
element = driver.find_element_by_xpath("//div[@class='class1']/*")
driver.execute_script("return arguments[0].textContent;", element)
print(element.text)

, но это даетя все данные в родительском классе в виде строки, и я хочу, чтобы они отделены.

вот форма HTML на веб-сайте:

<div class="class1" id="class1">    
    <div class="b">
        <div class="m1">
            <p>data1</p>
        </div>
        <div class="m2">
            <p>data2</p>
        </div>
    </div>
    <div class="b">
        <div class="m1">
            <p>data3</p>
        </div>
        <div class="m2">
            <p>data4</p>
        </div>
    </div>
.
.
.

</div>

, как я сказал, я хочу, чтобы мои данныев списке my_data = ['data 1', 'data 2', 'data 3', 'data 4' , ...] или в диктовке ... но с моим кодом я просто получаю его в виде строки.my_data = "data 1 data 2 data 3 data 4"

Ответы [ 2 ]

1 голос
/ 27 апреля 2019

Вот решение.

my_data = driver.execute_script("var myList=[];arguments[0].forEach(function(element) {myList.push(element.textContent);});return myList;",driver.find_elements_by_css_selector(".class1 p"))
print(my_data)

Вот вывод: enter image description here

0 голосов
/ 27 апреля 2019

хорошо, я понял:
в моем коде вместо find_element_by_xpath я должен использовать find_elements_by_xpath поэтому он возвращает мне список элементов, а затем:

for items in element:
    my_element = items.text
    print (element)

спасибо этому посту и этому посту .

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