【问题标题】:AttributeError: module 'sys' has no attribute 'setdefaultencoding'AttributeError:模块“sys”没有属性“setdefaultencoding”
【发布时间】:2017-12-28 08:52:43
【问题描述】:

我的原始代码是这样的。

#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()

【问题讨论】:

  • 启动python 3.4,此功能不再可用。
  • 还有importimportlib,没有大写...请仔细检查您在此处输入的内容;)
  • 顺便说一句,后面的代码不可能在 Python 3.6 上运行!

标签: python python-3.x encoding web-scraping


【解决方案1】:

您应该删除sys.setdefaultencoding。请注意,这在 Python 2 中也一直是对sys.setdefaultencoding 的滥用。 From Python 2 documentation:

sys.setdefaultencoding(name)

设置 Unicode 实现使用的当前默认字符串编码。如果 name 不匹配任何可用的编码,则引发 LookupError。 此函数仅供site 模块实现使用,并在需要时由sitecustomize 使用。一旦被site 模块使用,它就会从sys 模块的命名空间中移除。

2.0 版中的新功能。

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

【讨论】:

  • 当我删除这个短语时,我收到一个关于编码的新错误……太难过了。
  • 不代表出现错误信息。但是,所有推文都以这种方式标记为\xeb\xb0\xb0\xea\xb3\xa0\xed\。我无法解决这个...
猜你喜欢
  • 2015-03-23
  • 2020-11-06
  • 2018-04-14
  • 2019-02-18
  • 1970-01-01
  • 2020-01-01
  • 2019-07-20
  • 2021-11-05
相关资源
最近更新 更多