使用Tweepy以英语以外的其他语言更新Twitter时出错。

时间:2015-11-02 09:18:30

标签: python python-2.7 twitter

我在使用不同于ASCII字符的Tweepy时遇到问题。我尝试了许多不同的方法,但每个方法我终端都有不同的错误。

所以,首先我会做Twitter所要求的所有舞蹈并导入我需要的东西:

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)

然后,我去一个网站找Tweet的句子。

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)

发现此错误后,我发现了thisthisthis以及其他一些建议解决方案。但是,在尝试打印句子时我没有任何问题。我想这就是为什么它没有解决我的问题。

尝试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.

有了这个错误,我找不到任何相关内容。但我试图用this问题来改变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}]

我还发现了this个问题,但这与使用媒体进行更新有关。

最后

我在git上发现了this讨论,提示我的问题是在Tweepy中修复的错误(?)。

有什么想法?如果我能以api.update_status()接受的格式转换文本,我会很高兴。

1 个答案:

答案 0 :(得分:1)

我刚刚在这个链接中找到答案:

Traceback when updating status on twitter via Tweepy

原来我应该调用更新函数,如下所示:

 api.update_status(status=tuite)