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

时间:2017-12-30 19:36:32

标签: python mechanize

我正在使用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,打印'没有结果',但它不起作用。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

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

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

try:
    tr2=table2.findAll('tr')[1]
except IndexError:
    pass