【问题标题】:Where is my encoding wrong? (The letter "x95 \ x84 \ xeb \...." appears.)我的编码哪里错了? (出现字母“x95\x84\xeb\....”。)
【发布时间】: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") 读取字节和写入字节。重点是“传入的是哪个编码系统?”,另一个认为是python3unicode 所以谁在乎编码?
  • @dsgdfg 我搜索了。英文以外的其他语言的搜索结果要正确编写这段代码,我被要求这样写:(“57:b'\ xeb \ x84 \ xb9”当推文出现时。)我如何更正和更正?缺少编码的概念,我遇到了麻烦
  • @nutmeg64 与上面的评论类似。我不能召唤两个人,所以我会回信。我正在导入英语以外的语言。不是英语的互联网搜索结果以这种方式表示。我仍然很遗憾,我不明白你的评论。这是因为编码的概念不够。你能解释更多吗?
  • 如果您的目标是将推文写入文件,那么由于 Python3 默认处理 unicode,您只需将其写入文件即可。假设它是作为 unicode 提供的,它是哪种语言并不重要。如果您的目标不同,请更具体。

标签: python python-3.x twitter unicode encoding


【解决方案1】:

这是对您问题的简化版本的答案。

由于我不懂韩语,所以我使用了谷歌翻译。我输入“你好”并将其翻译成韩语。 然后我查看了翻译结果的“检查元素”。这是得到的:

在您的情况下用 selenium 提取 span 元素等效于提取 tweet-text 元素:

span = browser.find_element_by_class_name('short_text')
print(span.text)

这将是我们的结果:

>>>안녕하세요

如您所见,不需要编码\解码,因为在 Python 3.x 中 str = unicode

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 2013-08-17
    • 2010-12-14
    相关资源
    最近更新 更多