Mon code d'origine est le suivant.
#py3.6, windows10
import time
from Selenium import webdriver
import codecs
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
Le rechargement n'est pas pris en charge. C'était réparé.
Import importlib
Importlib.reload (sys)
Mais il y avait aussi une erreur.
AttributeError: le module 'sys' n'a pas d'attribut 'setdefaultencoding'
Comment dois-je résoudre ce problème? J'apprécierais votre aide.
Je joins également tout mon code.
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()
Vous devez supprimer le sys.setdefaultencoding
. Notez que cela a été un abus de sys.setdefaultencoding
Tout au long de Python 2 aussi. De Python 2 :
sys.setdefaultencoding(name)
Définissez le codage de chaîne par défaut actuel utilisé par l'implémentation Unicode. Si le nom ne correspond à aucun codage disponible, LookupError est déclenchée. Cette fonction est uniquement destinée à être utilisée par l'implémentation du module
site
et, si nécessaire, parsitecustomize
. Une fois utilisé par le modulesite
, il est supprimé de l'espace de noms du modulesys
.Nouveau dans la version 2.0.
Cela définit l'encodage des chaînes de 8 bits dans Python 2. Puisque les bytestrings ont no l'encodage dans Python 3, et les chaînes unicode (str
) n'en ont pas (elles sont Unicode, mais avec un encodage interne opaque), cette fonction n'aurait aucun sens sur Python 3 - il y a rien pour définir l'encodage par défaut pour.