如何在selenium中单独获取类中的每个元素

问题描述 投票:1回答:2

有一个我想要卷曲的网站,数据是嵌套和分离的类和元素。 每个页面都有不同数量的这些类和元素。我希望在列表中获取数据,因为每个列表元素都是页面元素数据之一。

这就是我为此所做的:

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' , ...]或dict ...但我的代码,我只是把它作为一个字符串。 my_data = "data 1 data 2 data 3 data 4"

python selenium curl selenium-webdriver
2个回答
1
投票

这是解决方案。

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
投票

好吧,我明白了: 在我的代码而不是find_element_by_xpath我应该使用find_elements_by_xpath所以它返回一个元素列表,然后:

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

感谢this postthis post

© www.soinside.com 2019 - 2024. All rights reserved.