Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
美丽汤中的独角兽(python 2.7.1)_Python_Beautifulsoup_Sgml_Sgmlreader - Fatal编程技术网

美丽汤中的独角兽(python 2.7.1)

美丽汤中的独角兽(python 2.7.1),python,beautifulsoup,sgml,sgmlreader,Python,Beautifulsoup,Sgml,Sgmlreader,我在这里使用的是Python2.7.1上的BeautifulSoup3.2 我最近一直在尝试一些简单的工作,但它 看起来相当棘手: 我做了以下工作: temp=BeautifulSoup(urllib2.urlopen(urlList[1], None,15)) 但是,我得到了一个错误: File "/home/foo/k/kat/BeautifulSoup.py", line 1519, in __init__ BeautifulStoneSoup.__init__(self, *args,

我在这里使用的是Python2.7.1上的BeautifulSoup3.2

我最近一直在尝试一些简单的工作,但它 看起来相当棘手:

我做了以下工作:

temp=BeautifulSoup(urllib2.urlopen(urlList[1], None,15))
但是,我得到了一个错误:

File "/home/foo/k/kat/BeautifulSoup.py", line 1519, in __init__
BeautifulStoneSoup.__init__(self, *args, **kwargs)
File "/home/foo/k/kat/BeautifulSoup.py", line 1144, in __init__
self._feed(isHTML=isHTML)
File "/home/foo/k/kat/BeautifulSoup.py", line 1186, in _feed
SGMLParser.feed(self, markup)
File "/usr/lib/python2.7/sgmllib.py", line 104, in feed
self.goahead(0)
File "/usr/lib/python2.7/sgmllib.py", line 143, in goahead
k = self.parse_endtag(i)
File "/usr/lib/python2.7/sgmllib.py", line 320, in parse_endtag
self.finish_endtag(tag)
File "/usr/lib/python2.7/sgmllib.py", line 358, in finish_endtag
method = getattr(self, 'end_' + tag)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfa' in
position 4: ordinal not in range(128)
如果我下次运行相同的循环,有时还会得到:

File "/home/foo/k/kat/BeautifulSoup.py", line 1519, in __init__
BeautifulStoneSoup.__init__(self, *args, **kwargs)
File "/home/foo/k/kat/BeautifulSoup.py", line 1144, in
__init__
self._feed(isHTML=isHTML)
File "/home/foo/k/kat/BeautifulSoup.py", line 1186, in _feed
SGMLParser.feed(self, markup)
File "/usr/lib/python2.7/sgmllib.py", line 104, in feed
self.goahead(0)
File "/usr/lib/python2.7/sgmllib.py", line 143, in goahead
k = self.parse_endtag(i)
File "/usr/lib/python2.7/sgmllib.py", line 320, in parse_endtag
self.finish_endtag(tag)
File "/usr/lib/python2.7/sgmllib.py", line 358, in finish_endtag
method = getattr(self, 'end_' + tag)
UnicodeEncodeError: 'ascii' codec can't encode characters in position
4-5: ordinal not in range(128)
如何避免这种错误?显然sgmllib.py有问题

我尝试了一些来自SOF的解决方案:

*]尝试了
soup=BeautifulSoup(第页,fromcodeding=)
结果:Dosent工作,同样的错误

*]尝试将我的sgmllib.py从2.7.2版本升级到2.7.1版本 结果:Dosent工作,同样的错误

*]已尝试
html=BeautifulSoup(page.encode('utf-8'))
结果:Dosent工作,同样的错误


对于如何解决此编码错误,如有任何建议,我将不胜感激。

请在您的模块中尝试此代码

if __name__ == "__main__":
    reload(sys)
    sys.setdefaultencoding("utf-8")

在您的模块中尝试此代码

if __name__ == "__main__":
    reload(sys)
    sys.setdefaultencoding("utf-8")

似乎您试图解析的页面的编码与utf-8不同。你用什么试过soup=BeautifulSoup(page,fromEncoding=)呢?嗨,Bogdan,我试过soup=BeautifulSoup(page,fromEncoding=“utf-8”),但是,我得到了同样的错误。你确定你试图解析的页面的编码是“utf-8”吗?@Bogdan,是的,当我在firefox中查看(失败的页面)时,查看-->编码,我看到了UTF-8。你能添加你试图解析的url吗?似乎你试图解析的页面的编码与UTF-8不同。你用什么试过soup=BeautifulSoup(page,fromEncoding=)呢?嗨,Bogdan,我试过soup=BeautifulSoup(page,fromEncoding=“utf-8”),但是,我得到了同样的错误。你确定你试图解析的页面的编码是“utf-8”吗?@Bogdan,是的,当我在firefox中查看(失败的页面)时,查看-->编码,我看到了UTF-8。你能添加你试图解析的url吗?请原谅我的无知,但是“在你的if name==“main”:”-这也是要插入的一段代码吗?如果是,我应该在哪里包含此代码?sys.setdefaultencoding不工作。sys.getdefaultencoding返回ascii.Updated代码,以显示正确的语法,因为它被格式混淆了。这绝对是天才。上面的代码消除了UnicodeCodeer错误。我似乎不理解上面的代码是如何工作的。“if name==”main“:”做什么?你能解释一下吗?@user7699最近我偶然发现了同样的问题,所以我决定发布这个简单的技巧。:)如果您使用Unicode和Python解释器的版本,则需要设置Defaultsetting再次为您的解释进行大量存储。这解决了我已经挣扎了大约两天的问题!请原谅我的无知,但是“在您的if name==“main”中”:-这也是要插入的一段代码吗?如果是,我应该在哪里包含此代码?sys.setdefaultencoding不工作。sys.getdefaultencoding返回ascii.Updated代码,以显示正确的语法,因为它被格式混淆了。这绝对是天才。上面的代码消除了UnicodeCodeer错误。我似乎不理解上面的代码是如何工作的。“if name==”main“:”做什么?你能解释一下吗?@user7699最近我偶然发现了同样的问题,所以我决定发布这个简单的技巧。:)如果您使用Unicode和Python解释器的版本,则需要设置Defaultsetting再次为您的解释进行大量存储。这解决了我已经挣扎了大约两天的问题!