我在使用字符不同于ASCII的Tweepy时遇到问题。我尝试了许多不同的方法,但每种方法在终端中都有不同的错误。
所以,首先我做了推特要求的所有舞蹈,并导入了我需要的东西:
from lxml import html
import requests
from random import randint
import tweepy, sys, time
import requests
import unicodedata
consumer_key="x"
consumer_secret="y"
access_token="z"
access_token_secret="w"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
然后,我去一个网站上找句子发推特。
page = requests.get("www.webpage.com")
poemT = html.fromstring(page.text)
phrases = poemT.xpath('//div[@class="mainData"]/text()')
在尝试转换句子时,我找不到适合函数api.update_satus()的格式,每次尝试都会收到以下错误消息。
尝试1:
tuite = phrases.pop(0)
api.update_status(tuite)
错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'xe9' in position 0: ordinal not in range(128)
有了这个错误,我发现了这个,这个,这个和其他一些建议解决方案如下。然而,我在尝试打印句子时没有问题。我想这就是为什么它没有解决我的问题。
尝试2
tuite = phrases.pop(0).encode('utf-8')
api.update_status(tuite)
错误:
tweepy.error.TweepError: Failed to send request: Headers indicate a formencoded body but body was not decodable.
由于这个错误,我找不到任何相关的东西。但正如这个问题所说,我只是试图用ASCII转换这个句子。但我还是犯了一个错误。
尝试3
title = phrases.pop(0)
tuite = unicodedata.normalize('NFKD', title).encode('ascii','ignore')
api.update_status(tuite)
错误:
tweepy.error.TweepError: [{u'message': u'media_ids parameter is invalid.', u'code': 44}]
我也发现了这个问题,但它与媒体更新有关。
最后
我在git上发现了这个讨论,这表明我的问题是一个需要在Tweepy中修复的bug。
有什么想法吗?如果我能将文本转换为api.update_status()接受的格式,我会很高兴。
我刚刚在这个链接中找到了答案:
通过Tweepy 在推特上更新状态时的追溯
原来我应该调用更新函数如下:
api.update_status(status=tuite)