0

我使用以下代码:

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.

这是为什么?我检查了缩进和冒号。提前感谢您的帮助。

4

2 回答 2

4

一些东西。

首先,continue用于在 while 或 for 循环中使用,以告诉循环跳到下一次迭代。在 try/except 块中使用它的地方不起作用。您可能正在考虑pass,但仅当您尝试执行以下操作时才需要它:

try:
    # Code with potential error
except ErrortoCatch:
    pass

你想有一个缩进的块,但不做任何事情。在这里,这意味着你想捕获异常,但不做任何事情。

您有一些缩进错误和怪异,例如名称意外缩进了一个额外的级别。这可能是因为您混合了制表符(扩展到 8 个空格)和空格(应该使用 4 个)。PEP 8说你应该使用 4 个空格来缩进,你应该遵循的建议。

可能导致您的错误的是您使用了 bare except:,这几乎不是一个好主意。当您使用 try/except 块时,您应该始终知道您正在寻找什么错误,这样您就不会在尝试处理某些特定异常时意外掩盖真正的错误。值得注意的是,它except:还会捕获诸如 之类的东西KeyboardInterrupt,而您真的,真的,不想捕获。

我认为正在发生的事情是您的try块中的一项操作导致了一个错误,导致变量由于某种原因无法打印。这可能是很多事情,因此您应该在语句中指定您尝试处理的错误except,然后找出您需要修复的其他错误。

此外,函数名称与其调用之间不应有空格,例如link.get ('href')=> link.get('href')

于 2013-10-21T03:40:39.320 回答
0

continue只允许在 for 或 while 循环中。你已经把它放在except. 我想你可能会做出错误的缩进或误解continue

于 2013-10-21T03:20:18.073 回答