私の元のコードはこれです。
#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:モジュール「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()
_sys.setdefaultencoding
_を削除する必要があります。これは_sys.setdefaultencoding
_の乱用であり、Python 2でもずっと続いていることに注意してください。 Python 2ドキュメントから :
sys.setdefaultencoding(name)
Unicode実装で使用される現在のデフォルトの文字列エンコーディングを設定します。 nameが使用可能なエンコーディングと一致しない場合、LookupErrorが発生します。 この関数は、
site
モジュールの実装と、必要に応じてsitecustomize
でのみ使用することを目的としています。site
モジュールで使用されると、sys
モジュールの名前空間から削除されます。バージョン2.0の新機能。
これにより、Python 2の8ビット文字列のエンコードが設定されます。バイト文字列にはPython 3のnoエンコードがあり、Unicode文字列(str
)どちらもありません(Unicodeですが、不透明な内部エンコーディングを使用)、この関数はPython 3では無意味です-デフォルトのエンコーディングを設定するnothingがあります。