如何验证tr / table / td是否存在

问题描述 投票:0回答:1

我正在使用mechanize浏览器来检索一些信息。在搜索表单中,如果没有结果,我的代码不起作用

在这里我的代码

list_src =["keyword1","gdfgz", "keyword2"]
i = 0
while (i < 2):
        br2 = mechanize.Browser()
        br2.set_cookiejar(cj)
        br2.open("https://url")
        br2.select_form(nr=0) # this is the search form
        br2.form['sq'] = liste_src[i]
        res2 = br2.submit()
        html2 = res2.read() 
        soup = BeautifulSoup(html2, 'lxml')
        table1 = soup.findAll("table",{ "width" : "100%" })[13] 
        tr1 = table1.findAll('tr')[3] 
        table2 = tr1.findAll("table",{ "width" : "100%" })[0]
        tr2 = table2.findAll('tr')[1] 

我的错误信息:

tr2 = table2.findAll('tr')[1] IndexError:列表索引超出范围

当没有结果时,就没有这个tr。所以我试图添加,如果不是tr,打印'没有结果',但它不起作用。我该如何解决这个问题?

python mechanize
1个回答
1
投票

您可以检查tr2(或任何其他列表)的长度,然后根据列表长度迭代所有元素...或者如果index <length,则访问列表中的任何特定索引。

idx = 1
tab2trs = table2.findAll('tr')
tr2 = None
if idx < len(tab2trs):
    tr2 = tab2trs[idx]

或者你可以添加一个尝试,除了...

try:
    tr2=table2.findAll('tr')[1]
except IndexError:
    pass
© www.soinside.com 2019 - 2024. All rights reserved.