我在Python 3中有一段代码用Windows中的HTMLParser成功解析HTML,问题是我想在Linux中运行该脚本,但它似乎没有用。
我使用以下内容检索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中解析它?