Selenium如何循环通过div中的所有类并单击每个类?



嗨,伙计们,我试图使一个脚本,将循环通过稀有工具上的所有项目,逐个点击div,然后让我的项目细节。然而,由于某种原因,我的脚本不做任何事情....我也没有得到任何错误,只是它没有点击div出于某种原因。所有div的类名都是w-72,如下图

所示。
<div class="flex flex-row flex-wrap justify-center">
<div class="mb-4 ml-4 overflow-hidden border border-gray-300 rounded-lg shadow-md bgCard dark:border-gray-800">
<div class="w-72">
<a href="/garagexyz-genesis" class="">
<div class="relative w-full overflow-hidden" style="height: 220px;">
<!----> 
<img src="https://projects.b-cdn.net/garagexyz-genesis/header.jpg?height=220" class="object-cover object-center w-full h-full"> 
<div class="flex flex-row mt-2"><div class="p-2 ml-2">
<div class="font-bold text-pink-600 dark:text-gray-300">
GarageXYZ Genesis 500
</div> 

代码

from selenium import webdriver
from selenium.webdriver.common.by import By


driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
driver.maximize_window()
index=0
driver.get("https://rarity.tools/")

while True:
divs = driver.find_elements(By.CLASS_NAME, 'w-72')
print(divs)
try: 
divs[index].click()
except IndexError:
break  # no more elements, exit the loop

# get project info
# ...

driver.back()

index += 1

您可以简单地遍历找到的元素,然后通过访问子a标记并获得其href属性来提取链接。

为了避免陈旧的元素,你可以将链接放在一个列表中,并单独打开它们

from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://rarity.tools/")
links = [e.find_element(By.XPATH, ".//a").get_attribute("href") for e in driver.find_elements(By.CLASS_NAME, 'w-72')]
for l in links:
driver.get(l)

最新更新