如何在硒中分别获取类中的每个元素

时间:2019-04-27 13:44:39

标签: python selenium curl selenium-webdriver

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

这就是我所做的:

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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

好吧,我明白了:
在我的代码中而不是numOfGuests='' while not numOfGuests: print('How many guests will you have?') numOfGuests = input() numOfGuests=int(numOfGuests) 中,我应该使用import sys import numpy numpy.set_printoptions(threshold=sys.maxsize) 因此它返回了一个元素列表,然后:

find_element_by_xpath

感谢this postthis post