在如下结构的HTML文件中:
<div class="card"> <div class="id"> ID: 123456 <div class="title"> Title 1 <div class="description"> Description 1 <div class="card"> <div class="id"> ID: 89123 <div class="title"> Title 2 </div>
假设我有一个可变数量的div与类“卡”,使用Selenium我想循环这些div,如果有div的类描述,我想打印他的文本。我试图在下面执行类似于代码的操作,但使用 find_element_by_xpath 。我将始终得到具有类"description“的第一个元素。如何通过循环遍历div来修复这个问题和正确获取元素?非常感谢。
find_element_by_xpath
cards = webdriver.find_elements_by_xpath("//div[@class='main-div']") for card in cards: description = card.find_element_by_xpath("//div[@class='description']") print(description.text) except: print("No description")
发布于 2020-05-08 18:17:45
您需要获得所有带有类“卡”的div,并在其中搜索div“描述”:
cards = webdriver.find_elements_by_css_selector(".card") for card in cards: description = card.find_element_by_css_selector(".description") print(description.text) except: print("No description.")
PS:或者把你的第一个XPath改为 //div[@class='card'] ,把第二个XPath改为 .//div[@class='description'] ,就像其他人建议的那样。
//div[@class='card']
.//div[@class='description']
我希望它能帮到你!
发布于 2020-05-08 18:52:02
只需将 . 用于 intermediate 子tag.So,应该是这样的
.
intermediate
card.find_element_by_xpath(".//div[@class='description']")
代码在这里:
cards = webdriver.find_elements_by_xpath("//div[@class='card']") for card in cards: