2014-10-01 63 views
0

我使用python中的urllib2獲取url內容,並將它們置於python的本機html分析器中。代碼奇妙的作品以及我的蟒蛇2.7.4,但是,我的朋友的機器已經蟒蛇2.6.9和問題,面臨他的機器上是:格式不正確的開始標記,在python 2.6.9中拋出異常,但在2.7.4中拋出異常HTMLParser

Traceback (most recent call last): 
File "opsview_audit.py", line 420, in <module> 
check_instances_against_regex(instances) 
File "opsview_audit.py", line 219, in check_instances_against_regex 
attrs_being_monitored = get_host_monitoring_status(cred['url'], running_instances, 
cred['user_name'], cred['pass_key']) 
File "opsview_audit.py", line 112, in get_host_monitoring_status 
parser.feed(result.read()) 
File "/usr/lib64/python2.6/HTMLParser.py", line 108, in feed 
self.goahead(0) 
File "/usr/lib64/python2.6/HTMLParser.py", line 148, in goahead 
k = self.parse_starttag(i) 
File "/usr/lib64/python2.6/HTMLParser.py", line 229, in parse_starttag 
endpos = self.check_for_whole_start_tag(i) 
File "/usr/lib64/python2.6/HTMLParser.py", line 304, in check_for_whole_start_tag 
self.error("malformed start tag") 
File "/usr/lib64/python2.6/HTMLParser.py", line 115, in error 
raise HTMLParseError(message, self.getpos()) 
HTMLParser.HTMLParseError: malformed start tag, at line 509, column 47 

可能有些開始標籤不正確的,這在python 2.6.9作爲例外拋出,但不在2.7.4
這裏,2.6.9升級到2.7.4或更高版本不是一種選擇。

回答

0

兩種解決方案:

- 使用另一個htmlparser,如Beautiful soup 3或lxml。他們都很容易學習和Python 2.6的兼容。

- 試圖找到該錯誤並將其過濾掉。

+0

美麗的湯不是一個選項。如果我切換到BS,會有很多依賴項會受到影響。 – 2014-10-01 09:30:23

+0

然後剩下的唯一選擇是試圖在html中查找錯誤。 – 2014-10-01 09:31:54

+0

嘗試通過放置try:catch:來試圖調試問題,並嘗試通過放置try:catch:pass來忽略錯誤,但是我的htmlparser不會進一步解析(遠程抓取的html頁面,我無法控制它)。 – 2014-10-01 09:32:06