2017-07-22 65 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

btw、この後者のコードはPython 3.6で実行することはできません! –

答えて

2

sys.setdefaultencodingを削除する必要があります。これは、Python 2でもあまりにも多くの悪用を受けていることに注意してください。sys.setdefaultencodingFrom Python 2 documentation:バイト文字列がのPython 3で無エンコーディング、Unicode文字列(str)を持っているのでこれはPythonの2の8ビット文字列のエンコーディングを設定し

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.

持っどちらも(彼らはUnicodeをしているが、不透明で内部のエンコーディング)、この関数はPython 3では意味がありません。 はありません。はデフォルトのエンコーディングを設定します。

+0

フレーズを削除すると、エンコーディングに関する新しいエラーが発生します...それはとても悲しいです。 – yome

+0

@yome **何**エラー? –

+0

エラーメッセージが表示されるわけではありません。 しかし、すべてのつぶやきは、このように\ xeb \ xb0 \ xb0 \ xea \ xb3 \ xa0 \ xed \とマークされています。 私はこれを解決することはできません... – yome

関連する問題