selenium 如何跳过下一个for迭代?

rbl8hiat  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(124)

当试图抓取一个有促销价和普通价的网站时,SelensWebDriver会发现这两个元素。我想:如果找到促销价格,跳过下一次迭代,这将是常规价格。“最终价格”是促销价,“价格价格”是正常价格。
`

remedios= driver.find_elements(By.CLASS_NAME, "price-number")

        for element in remedios:
            try:
                driver.find_elements(By.CLASS_NAME, "price price-final")
                preco=(element.text).replace("R$","").replace(",",".")
                listaremedio=[{'preco':preco,'farmacia':farmacia}]
                listabraba.extend(listaremedio)
            except:
                try:
                    driver.find_elements(By.CLASS_NAME, "price price-from")
                    preco=(element.text).replace("R$","").replace(",",".")
                    listaremedio=[{'preco':preco,'farmacia':farmacia}]
                    listabraba.extend(listaremedio)   
                except:
                    pass

这就是我使用的代码。它的工作“正确”,它确实得到了促销价,如果它是可用的。但由于“补救”中的下一个元素将是常规价格,它也会得到这一点。我想要一些基本上能做到这一点的东西:如果这个迭代有促销价格,那么跳过下一个迭代。这将使它跳过常规价格,进入下一张卡。谢谢你的关注。任何帮助都将不胜感激。

vwhgwdsa

vwhgwdsa1#

我会在这里使用一个内部for循环:

remedios= driver.find_elements(By.CLASS_NAME, "price-number")

for element in remedios:
    for name in ('price price-final', 'price price-from'):
        try:
            driver.find_elements(By.CLASS_NAME, name)
        except:
            # element not found
            continue
        else:
            break
    else: # if no break statement was encountered, no elements found
        continue

    preco = element.text.replace("R$","").replace(",",".")
    listaremedio = [{'preco': preco, 'farmacia': farmacia}]
    listabraba.extend(listaremedio)

相关问题