2015-03-13 49 views
-2

我的代碼在沒有警告的情況下停止工作。我縮小到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

回答

0

你的代碼假定以下行:

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