运行boilerpipe 时报以下错误:
Traceback (most recent call last):
File "/Users/Adrian/anaconda3/lib/python3.6/site-packages/boilerpipe/extract/__init__.py", line 45, in __init__
self.data = unicode(self.data, encoding)NameError: name 'unicode' is not defined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "webcrawl.py", line 26, in <module>
fileW.write(str(Extractor(extractor='ArticleExtractor', url=urls).getText() + "\n\n\n" + str(articleDate.publish_date)+"\n\n\n"))
File "/Users/Adrian/anaconda3/lib/python3.6/site-packages/boilerpipe/extract/__init__.py", line 47, in __init__
self.data = self.data.decode(encoding)UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
定位至关键信息:
"/Users/Adrian/anaconda3/lib/python3.6/site-packages/boilerpipe/extract/__init__.py", line 47, in __init__
self.data = self.data.decode(encoding)UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
找到以下解决方法:
错误消息指向一行boilerpipe/extract/__init__.py,该行调用unicode内置函数。
我假设下面的链接是您正在使用的包的源代码。如果是这样,它似乎是为Python 2.7编写的,如果你看到这个文件的末尾,你可以看到它:
https://github.com/misja/python-boilerpipe/blob/master/setup.py
据我所知,你有几个选择:
- 找到这个包的Python 3端口。那里至少有几个(这里是一个,这是另一个)。
- 将程序包自行移植到Python 3(如果这是唯一的错误,您可以简单地更改该行以使用str,但稍后的更改可能会导致程序包的其他部分出现问题)。这个官方工具应该有所帮助; 这个官方指南也应该如此。
- 将项目移植到Python 2.7并继续使用相同的包。
我希望这有帮助!
按照以上解决方案,成功解决。
参考资料:
https://stackoverflow.com/questions/48234632/python-3-unicode-not-found