列出索引超出范围的for循环中的if语句

时间:2020-09-25 13:11:44

标签: python selenium for-loop if-statement

我正在用硒进行网页抓取,但该网站上有一些广告不包含文字。因此,我无法抓取文字,因为其中没有任何文字。所以我以为我可以使用if语句,但仍然会给出错误。我该如何解决?

此处是代码:

for i in range(10):
    dict1 = {}
    driver.get("https://www.vrt.be/vrtnws/nl/rubrieken/economie/")
    sleep(1)

    articles = driver.find_elements_by_class_name("vrt-teaser__title-text")
    a = articles[i].text
    articles[i].click()
    sleep(1)
    if driver.find_elements_by_class_name("cmp-text")[0].text and driver.find_elements_by_class_name("cmp-text")[1].text:
        tupletext = driver.find_elements_by_class_name("cmp-text")[0].text, driver.find_elements_by_class_name("cmp-text")[1].text
    else:
        a = "None"
        tupletext = "None"
    dict1 = a, tupletext
    csv_writer.writerow([a,tupletext])
    print(dict1)
    sleep(1)

2 个答案:

答案 0 :(得分:0)

您可以使用try ...,除非这样:

try:
        tupletext = driver.find_elements_by_class_name("cmp-text")[0].text, driver.find_elements_by_class_name("cmp-text")[1].text
except:
        a = "None"
        tupletext = "None"

基本上,它运行命令,如果命令返回错误,它将转到'except'块,并将None分配给a和tupletext。

答案 1 :(得分:0)

您的错误是列表索引超出范围,因此您的if语句应为:

elements = driver.find_elements_by_class_name("cmp-text")
if (elements.len() < 2) // process an empty tuple
else // normal tuple