2017-07-22 113 views
1

我原來的代碼是這樣的。AttributeError:模塊'sys'沒有屬性'setdefaultencoding'

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

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

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

Import importlib 
Importlib.reload (sys) 

但也有一個錯誤。

AttributeError: module 'sys' has no attribute '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() 
+0

從python 3.4開始,這個函數不再可用了。 –

+0

另外'import'和'importlib',不能大寫......請仔細檢查你在這裏輸入的內容;) –

+0

順便說一下,後面的代碼不可能在Python 3.6上運行! –

回答

2

您應該刪除sys.setdefaultencoding。請注意,這一直是Python 2中的sys.setdefaultencoding的濫用。 From Python 2 documentation

sys.setdefaultencoding(name)

Set the current default string encoding used by the Unicode implementation. If name does not match any available encoding, LookupError is raised. This function is only intended to be used by the site module implementation and, where needed, by sitecustomize . Once used by the site module, it is removed from the sys module’s namespace.

New in version 2.0.

此設置8位串的編碼在Python 2.自字節串具有沒有編碼在Python 3,和Unicode字符串(str)既沒有(他們的Unicode,但與不透明內部編碼),這個功能在Python 3上將毫無意義 - 有沒有什麼來設置默認編碼。

+0

當我刪除這個短語時,我得到了一個有關編碼的新錯誤......它很傷心。 – yome

+0

@yome **什麼**錯誤? –

+0

這並不意味着出現錯誤消息。 但是,所有推文都以這種方式標記爲\ xeb \ xb0 \ xb0 \ xea \ xb3 \ xa0 \ xed \。 我無法解決這個問題... – yome

相關問題