2012-12-20 59 views
1

這是一個非常奇怪的錯誤,我似乎無法弄清楚。BeautifulSoup遞歸錯誤調用tag.string

import urllib2 
from bs4 import BeautifulSoup 

url = 'http://www.crummy.com/software/BeautifulSoup/bs4/doc/' 
soup = BeautifulSoup(urllib2.urlopen(url)) 

print soup.title 

這將返回

<title>Beautiful Soup Documentation â€」 Beautiful Soup 4.0.0 documentation</title> 

如應在意料之中,但是如果我把它改爲「打印soup.title.string」(這應該返回減去所有html標籤上方),我得到

Traceback (most recent call last): 
    File "C:\Users\MyName\Desktop\MyProgram\Python\test.py", line 7, in <module> 
    print soup.title.string 
    File "C:\Python27\lib\idlelib\rpc.py", line 595, in __call__ 
    value = self.sockio.remotecall(self.oid, self.name, args, kwargs) 
    File "C:\Python27\lib\idlelib\rpc.py", line 210, in remotecall 
    seq = self.asynccall(oid, methodname, args, kwargs) 
    File "C:\Python27\lib\idlelib\rpc.py", line 225, in asynccall 
    self.putmessage((seq, request)) 
    File "C:\Python27\lib\idlelib\rpc.py", line 324, in putmessage 
    s = pickle.dumps(message) 
    File "C:\Python27\lib\copy_reg.py", line 74, in _reduce_ex 
    getstate = self.__getstate__ 
RuntimeError: maximum recursion depth exceeded 

我環顧四周,找不到遇到此錯誤的其他人。有什麼建議?

編輯:所以我已經嘗試了一些其他頁面上的相同的代碼,它的工作更好。例如,google.com有效。這意味着這是關於頁面構建的東西。

+0

適用於我在4.0.1;你的版本號是多少? – DSM

+0

4.1.3,它們提供的最新版本。我會嘗試返回幾個版本並測試。 – Cyborg771

+0

這可能不是它 - 我只是升級到4.1.3,它仍然適用於我。 : -/ – DSM

回答

0

也許問題是因爲它包含non_ASCII字符。 修改打印該對話

print soup.title.string.encode('ascii','ignore')