Python 如何使用Selenium查找循环通过div列表的元素?

Python 如何使用Selenium查找循环通过div列表的元素?,python,html,selenium,selenium-webdriver,web-scraping,Python,Html,Selenium,Selenium Webdriver,Web Scraping,在如下结构的HTML文件中: <div class="card"> <div class="id"> ID: 123456 </div> <div class="title"> Title 1 </div> <div class="description"> Description 1 </div> </div&

在如下结构的HTML文件中:

<div class="card">
    <div class="id">
        ID: 123456
    </div>
    <div class="title">
        Title 1
    </div>
    <div class="description">
        Description 1
    </div>
</div>

<div class="card">
    <div class="id">
        ID: 89123
    </div>
    <div class="title">
        Title 2
    </div>
</div>

您需要获取所有类别为“card”的div,并搜索其中的div“description”:

cards = webdriver.find_elements_by_css_selector(".card")

for card in cards:

    try:

        description = card.find_element_by_css_selector(".description")
        print(description.text)

    except:

        print("No description.")
PS:或者将您的第一个XPath更改为
//div[@class='card']
,将第二个XPath更改为
//div[@class='description']
,正如其他答案中建议的那样


我希望它能帮助你

您需要获取所有类别为“card”的div,并搜索其中的div“description”:

cards = webdriver.find_elements_by_css_selector(".card")

for card in cards:

    try:

        description = card.find_element_by_css_selector(".description")
        print(description.text)

    except:

        print("No description.")
PS:或者将您的第一个XPath更改为
//div[@class='card']
,将第二个XPath更改为
//div[@class='description']
,正如其他答案中建议的那样


我希望它能帮助你

只需对
中间
子标记使用
,所以应该是这样的

card.find_element_by_xpath(".//div[@class='description']")
此处代码:

cards = webdriver.find_elements_by_xpath("//div[@class='card']")

for card in cards:
    try:
        description = card.find_element_by_xpath(".//div[@class='description']")
        print(description.text)
    except:
        print("No description")

只需对
中间
子标记使用
,应该是这样的

card.find_element_by_xpath(".//div[@class='description']")
此处代码:

cards = webdriver.find_elements_by_xpath("//div[@class='card']")

for card in cards:
    try:
        description = card.find_element_by_xpath(".//div[@class='description']")
        print(description.text)
    except:
        print("No description")

您可以使用一个定位器和一个循环来实现这一点

for description in driver.find_elements_by_css_selector("div.card > div.description"):
    print(description.text)
注意:如果您想要修复当前代码,那么您只是缺少了第二个XPath中的self
轴。将
“//div[@class='description']”
更改为
“//div[@class='description']”
,以指示您要开始搜索当前
元素


有关
self
轴的更多信息,请参阅其中有大量与XPath和CSS选择器相关的信息。

您可以使用一个定位器和一个循环来实现这一点

for description in driver.find_elements_by_css_selector("div.card > div.description"):
    print(description.text)
注意:如果您想要修复当前代码,那么您只是缺少了第二个XPath中的self
轴。将
“//div[@class='description']”
更改为
“//div[@class='description']”
,以指示您要开始搜索当前
元素

有关
self
轴的更多信息,请参阅其中有大量与XPath和CSS选择器相关的信息