【发布时间】:2017-12-30 19:36:32
【问题描述】:
我正在使用 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,则打印 'no results' 但它不起作用。 我该如何解决这个问题?
【问题讨论】:
-
try: ... catch IndexError: ... -
@zvadym 你的意思是
try....except? -
@Code-Apprentice 对,谢谢 :)
-
你可以看看用 css 选择器来获取东西,比如:
tr1 = soup.select_one('table:nth-of-type(14) tr:nth_of_type(4)')然后检查它是否返回任何东西并采取适当的行动,甚至类似:print(getattr(tr1, 'text', 'No results!'))