gpt4 book ai didi

Python-迭代列表时如何处理异常?

转载 作者:行者123 更新时间:2023-12-01 07:27:39 25 4
gpt4 key购买 nike

我正在使用 Selenium 库,并尝试迭代项目列表,在网络上查找它们,当找到项目时我的循环正在工作,当在网页上找不到项目时,我很难处理异常。对于本例,我知道如果找不到该项目,页面将在跨度内显示“No Results For”,我可以通过以下方式访问:

browser.find_by_xpath('(.//span[@class = "a-size-medium a-color-base"])[1]')[0].text

现在的问题是,这个跨度仅在项目循环搜索未找到时出现。所以我尝试了这个逻辑,如果这个跨度不存在,则意味着找到了项目,因此执行循环的其余部分,如果跨度确实存在并且等于“无结果”,则去搜索下一个项目。这是我的代码:

data = pd.DataFrame()
for i in lookup_list:
start_url = f"https://www.amazon.com/s?k=" + i +"&ref=nb_sb_noss_1"
browser.visit(start_url)
if browser.find_by_xpath('(.//span[@class = "a-size-medium a-color-base"])[1]') is not None :
#browser.find_by_xpath("//a[@class='a-size-medium a-color-base']"):
item = browser.find_by_xpath("//a[@class='a-link-normal']")
item.click()
html = browser.html
soup = bs(html, "html.parser")
collection_dict ={
'PART_NUMBER': getmodel(soup),
'DIMENSIONS': getdim(soup),
'IMAGE_LINK': getImage(soup)
}
elif browser.find_by_xpath('(.//span[@class = "a-size-medium a-color-base"])[1]')[0].text != 'No results for':
continue
data = data.append(collection_dict, ignore_index=True)

我收到的错误是:

AttributeError: 'ElementList' object has no attribute 'click'

我确实明白我收到的错误是因为我无法访问属性单击,因为列表有多个项目,因此我无法单击所有项目。但我试图做的是,如果页面显示未找到该项目,甚至避免尝试访问它,我希望脚本只需转到下一个项目并搜索。我该如何修改这个?

提前谢谢您。

最佳答案

在这种情况下,您需要使用带有 pass 的 try- except ,就像 @JammyDodger 所说。尽管使用它通常不是一个好兆头,因为您不想在大多数情况下简单地忽略错误。 pass 将简单地忽略错误并继续循环的其余部分。

try:
item.click()
except AttributeError:
pass

为了跳到循环的下一次迭代,您可能需要使用 continue 关键字。

try:
item.click()
except AttributeError:
continue

关于Python-迭代列表时如何处理异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57377657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com