AttributeError:模块“ sys”没有属性“ setdefaultencoding”

yom*_*ome 8 python encoding web-scraping python-3.x

我的原始代码是这样。

#py3.6, windows10   
import time
from selenium import webdriver
import codecs
import sys

reload(sys)
sys.setdefaultencoding('utf-8')
Run Code Online (Sandbox Code Playgroud)

不支持重新加载。它是固定的。

Import importlib
Importlib.reload (sys)
Run Code Online (Sandbox Code Playgroud)

但是也有一个错误。

AttributeError:模块“ sys”没有属性“ setdefaultencoding”

我该如何解决?多谢您的协助。

我还附上了我的整个代码。

import time
from selenium import webdriver
import codecs
import sys

reload(sys)
sys.setdefaultencoding('utf-8')

browser = webdriver.PhantomJS('C:\phantomjs-2.1.1-windows/bin/phantomjs')
url = u'https://twitter.com/search?f=tweets&vertical=default&q=%EB%B0%B0%EA%B3%A0%ED%8C%8C%20since%3A2017-07-19%20until%3A2017-07-20&l=ko&src=typd&lang=ko'

browser.get(url)
time.sleep(1)

body = browser.find_element_by_tag_name('body')
browser.execute_script("window.scrollTo(0,document.body.scrollHeight);")

start = time.time()
for _ in range(500):
    now = time.time()
    browser.execute_script("window.scrollTo(0, 
    document.body.scrollHeight);")
    print str(_) + "    seconds: " + str(now - start) 
    time.sleep(0.2)

tweets=browser.find_elements_by_class_name('tweet-text')

with codecs.open("test.txt", "w","utf-8") as f:
    i = 1
    for i, tweet in enumerate(tweets):
        data = tweet.text
        data = data.encode('utf-8')
        print i, ":", data
        msg = (str(data) +'\n')
        f.write(msg)
        i += 1

end = time.time()
print(end - start)
browser.quit()
Run Code Online (Sandbox Code Playgroud)

Ant*_*ala 9

您应该删除sys.setdefaultencoding。注意,这sys.setdefaultencoding在Python 2中也一直是滥用。从Python 2文档中

sys.setdefaultencoding(name)

设置Unicode实现使用的当前默认字符串编码。如果名称与任何可用的编码都不匹配,则会引发LookupError。此功能仅打算由site模块实现以及需要的地方使用sitecustomize。一旦被site模块使用,它将被从sys模块的命名空间中删除。

2.0版中的新功能。

这设置了Python 2中8位字符串的编码。由于在Python 3中字节串没有编码,而unicode字符串(str)都没有(它们是Unicode,但是内部编码不透明),所以此函数在Python 3上将毫无意义。 - 没有设置默认编码的内容。