Python 如何使用Selenium查找循环通过div列表的元素?
在如下结构的HTML文件中: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&
<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选择器相关的信息