【发布时间】:2017-12-28 11:04:28
【问题描述】:
我的编码哪里错了? (出现字母“o”。)
Sys.setdefaultencoding ('utf-8')此声明已被删除。
我用Python 3。
那么字母x95\x84\xeb\xb0\xb0\xea\xb3\xa0\xed\x8c\x8c'就这样出来了。
我的编码哪里错了?
我也觉得很难理解,
346 seconds: 52.25020146369934
347 seconds: 52.694828271865845
348 seconds: 52.80767774581909
349 seconds: 52.92116045951843
这样,数据(推文)就出来了。 这是什么意思?
#py3.6
import time
from selenium import webdriver
import codecs
import sys
import importlib
importlib.reload (sys)
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(5000):
now = time.time()
browser.execute_script("window.scrollTo(0,document.body.scrollHeight);")
print (str(_) + " seconds: " + str(now - start))
time.sleep(0.1)
tweets=browser.find_elements_by_class_name('tweet-text')
with codecs.open("dlrjtdmstnrwp.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()
【问题讨论】:
-
据我所知,推文的文本已经是 unicode。据我了解,您想将推文写入文件,那么您为什么要对数据进行编码?为什么在那之后使用
str(data)? -
不要触摸编码系统,
codecs.open("dlrjtdmstnrwp.txt", "w","utf-8")读取字节和写入字节。重点是“传入的是哪个编码系统?”,另一个认为是python3是unicode所以谁在乎编码? -
@dsgdfg 我搜索了。英文以外的其他语言的搜索结果要正确编写这段代码,我被要求这样写:(“57:b'\ xeb \ x84 \ xb9”当推文出现时。)我如何更正和更正?缺少编码的概念,我遇到了麻烦
-
@nutmeg64 与上面的评论类似。我不能召唤两个人,所以我会回信。我正在导入英语以外的语言。不是英语的互联网搜索结果以这种方式表示。我仍然很遗憾,我不明白你的评论。这是因为编码的概念不够。你能解释更多吗?
-
如果您的目标是将推文写入文件,那么由于 Python3 默认处理 unicode,您只需将其写入文件即可。假设它是作为 unicode 提供的,它是哪种语言并不重要。如果您的目标不同,请更具体。
标签: python python-3.x twitter unicode encoding