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