Python - 程序不能突然工作

时间:2015-03-13 12:45:30

标签: python python-requests

我的代码在没有警告的情况下停止工作我把它缩小到requests.get,不再获得链接的html了。取而代之的是<response [200]>

我知道它在某个方面有效,我不明白改变了什么。

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 个答案:

答案 0 :(得分:0)

您的代码假定以下行:

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

始终给出相同的结果。而且肯定不是这种情况。该网站可能需要维护,可能会被暂时淹没,渲染网站时可能会出错等。

使用HTTP状态代码传达这些问题,可以使用t.status_code检索。

如果状态代码 200,则您无法再对t.contents中的HTML做出任何假设,例如存在任何<dl>标记的事实

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

有关详细信息,请参阅requests documentation