我在Python 3中有一段代碼,它可以在Windows中成功解析HTML和HTMLParser,問題是我想在Linux中運行該腳本,但它似乎不是加工。在Python3中使用HTMLParser解析HTML
我檢索與下面的HTML代碼:
html = urllib.request.urlopen(url).read()
html_str = str(html)
parse = MyHTMLParser()
parse.feed(html_str)
的html
原始輸出如下:
b'\n \n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n
<html xmlns="http://www.w3.org/1999/xhtml">\n
<head>\n
html
是二進制的,所以我將它轉換爲string
這樣parse.feed
沒有按抱怨。問題是轉換爲字符串時,我得到的HTML是這樣的:
'b\'\\n \\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\\n
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\\n
<html xmlns="http://www.w3.org/1999/xhtml">\\n
<head>\\n
正如你所看到的,我有幾個\\n
,Windows不給一個該死的他們,但他們的Linux '轉義序列,因此無法解析HTML。我不記得確切的錯誤的權利,但它是像can't parse \\
我用re
與re.sub("\\","",html_str)
但在Windows中刪除多餘的\
嘗試似乎並沒有做任何事情,在Linux中我得到也是一個錯誤。
這是錯誤在Linux中試圖re.sub
當HTML我得到:
>>> re.sub("\\","",html_str)
Traceback (most recent call last):
File "/usr/lib/python3.1/sre_parse.py", line 194, in __next
c = self.string[self.index + 1]
IndexError: string index out of range
任何想法,我怎麼能去除多餘的\
在html_str
這樣我就可以在Linux的解析呢?
'\\ n'在Linux上不是轉義序列。 '\\ n'是兩個字符,一個反斜槓(轉義爲''\'''使輸出成爲一個有效的Python字節文字)和一個'n'字符。這些字符在Windows和Linux上具有相同的含義。你能查找確切的錯誤和追溯? – 2013-04-24 07:38:10