我在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