我使用以下代码:
from bs4 import BeautifulSoup
soup = BeautifulSoup (open("43rd-congress.htm"))
final_link = soup.p.a
final_link.decompose()
trs = soup.find_all('tr')
for tr in trs:
for link in tr.find_all('a'):
fulllink = link.get ('href')
print fulllink #print in terminal to verify results
tds = tr.find_all("td")
try:
names = str(tds[0].get_text())
years = str(tds[1].get_text())
positions = str(tds[2].get_text())
parties = str(tds[3].get_text())
states = str(tds[4].get_text())
congress = tds[5].get_text()
except:
print "bad tr string"
continue
print names, years, positions, parties, states, congress
我收到以下错误:
SyntaxError: 'continue' not properly in loop.
为什么?我检查了缩进和冒号。感谢您的帮助。
答案 0 :(得分:4)
一些事情。
首先,continue
用于while或for循环,以告诉循环跳到下一次迭代。在try / except块中使用它的地方不起作用。您可能会考虑pass
,但如果您尝试执行以下操作,则只需要这样做:
try:
# Code with potential error
except ErrortoCatch:
pass
你想要一个缩进块,但不要做任何事情。在这里,这意味着您要捕获异常,但不要对此做任何事情。
你有一些缩进错误和古怪,就像名字意外缩进一个额外的水平。这可能是因为你有混合标签(扩展到8个空格)和空格(你应该使用4个)。 PEP 8说你应该使用4个空格来缩进,建议你应该遵循。
什么是可能导致您的错误是您使用裸except:
,这几乎绝不是一个好主意。当你使用try / except块时,你应该总是知道你正在寻找什么错误,所以当你只是试图处理一些特定的异常时,你不会意外地掩盖真正的错误。值得注意的是,except:
也捕获了KeyboardInterrupt
之类的东西,你真的,真的,不想抓住这些东西。
我认为正在发生的是try
块中的一个操作导致错误导致变量由于某种原因而无法打印。这可能是很多事情,因此您应该在except
语句中指定要尝试处理的错误,然后找出需要修复的其他错误。
此外,您不应该在函数名称与其调用之间留有空格,例如: link.get ('href')
=> link.get('href')
。
答案 1 :(得分:0)
continue
仅允许在for或while循环中使用。你把它放在except
中。我认为你可能会做出错误的缩进或误解continue
。