Python - 程序突然不工作

问题描述:

我的代码在没有警告的情况下停止工作。我缩小到requests.get不再获取链接的HTML。相反,它得到<response [200]>Python - 程序突然不工作

我知道一个事实,它在一个点上工作,我不明白是什么改变了。

t = requests.get("http://dictionary.goo.ne.jp/srch/jn/変体/m0u/") 
soup2 = BeautifulSoup(t.content) 
lookup2 = soup2.find_all("dl", {"class":"allList"})[0] 
link = lookup2.find_all("a")[0] 
link = link.get("href") 
link = "http://dictionary.goo.ne.jp/" + link 
r = requests.get(link) 
soup = BeautifulSoup(r.content) 
lookup = soup.find_all("div", {"class":"meaning"})[0].text 
print(lookup) 

收到错误:

Traceback (most recent call last): 
    File "C:/Users/Dominic/PycharmProjects/untitled2/main.py", line 12, in <module> 
    lookup2 = soup2.find_all("dl", {"class":"allList"})[0] 
IndexError: list index out of range 
+1

''是一个*成功的响应对象*,是您发布的代码中'r'或't'的字符串表示形式。 – 2015-03-13 12:46:13

+0

你的代码**作品**,它打印'普通の形や体裁と违っていること。体裁を変えることまた,その形や体裁.'你确定你不只是印刷't'或'r “某处? – 2015-03-13 12:48:37

+0

工作对我来说罚款“普通の形や体裁と违っていること。体裁を変えること。また,その形や体裁 ” – planet260 2015-03-13 12:55:37

你的代码假定以下行:

t = requests.get("http://dictionary.goo.ne.jp/srch/jn/変体/m0u/") 

总是给出相同的结果。这当然不是这种情况。该网站可能因维护而停机,可能会暂时陷入瘫痪,渲染站点时可能会出现错误等。

这些类型的问题使用HTTP状态代码进行通信,可以使用t.status_code进行检索。

如果状态代码是 200,你不能再做出关于HTML的任何假设在t.contents,如事实,那就是任何<dl>标签存在。

为了使您的代码更加健壮,您可以自己检查状态代码,或者在使用t.contents之前至少致电t.raise_for_status()。请参阅requestsdocumentation