【发布时间】:2016-03-11 18:38:28
【问题描述】:
你好我是编码的超级新手,还处于阶段,复制粘贴,学习,改变一些变量,跑步,交叉手指,敲击拳头或举起拳头......等等。
我使用this tutorial创建了一个推特机器人
我的代码如下
import time
from twython import Twython, TwythonError
app_key = "xxxx"
app_secret = "xxxx"
oauth_token = "xxxx"
oauth_token_secret = "xxxx"
naughty_words = [" -RT"]
good_words = ["search phrase", "another search phrase", "yet another", "one more", "search phrase two", "TFW search phrase"]
filter = " OR ".join(good_words)
blacklist = " -".join(naughty_words)
keywords = filter + blacklist
twitter = Twython(app_key, app_secret, oauth_token, oauth_token_secret)
search_results = twitter.search(q=keywords, count=100)
try:
for tweet in search_results["statuses"]:
try:
twitter.retweet(id = tweet["id_str"])
except TwythonError as e:
print e
except TwythonError as e:
print e
time.sleep(300)
所以当我运行代码时,它有时会得到结果并转发它们,但如果我只使用两个搜索词运行代码,它会找到更多并转发它们。
我不知道我是否超过了 twitter 搜索 api 限制(我找到了几个不同的数字)或者 OR OR OR OR 的字符串搞砸了或太长了。
欢迎对 python 和 twitter api 提出任何建议。非常感谢
编辑:UTF-8、URL 编码的搜索查询,最多 500 个字符,包括运算符。查询可能还受到复杂性的限制。
即使使用 OR 和空格,我仍然没有超出限制。
【问题讨论】:
-
看看here 以供参考。您没有具体说明“它找到更多”是什么意思。无论如何,我会说您的问题可能是您使用的是短语而不是单词。在 twitter 查询中,两个词之间的空格是 AND。如果您使用“term1 term2 OR term3 term4 OR term5....”进行搜索,它实际上会开始组合 AND 和 OR,我不知道它最终会做什么。请注意,在您提供的教程中,它使用单词,而不是短语。希望对您有所帮助。
-
嗨,非常感谢,是的,一点也不精确很抱歉,当我减少搜索词时,应用程序返回并因此转发更多结果,当我搜索完整字符串时,没有任何内容被转发。就像我说的那样,我认为 OR OR OR 可能存在一些混淆。在提供的教程中,但是她确实将一个短语指定为搜索词之一,我认为这些短语是孤立的,因此它会搜索:“term1 term2”或“term 3 term 4”或“term 5 term 6”是否有查看 twython 向 twitter 查询什么以查看“它最终会做什么?”的方式
-
嗨。你是对的,你提供的教程中有一些短语。好吧,在过去的某个时候,我在尝试将 OR 与短语(隐含地包括 AND)结合时遇到了一些问题,这就是我提到的原因。顺便说一句,
twython不会触及您编写的查询,它只是将其发送到 twitter。如果我今天有时间,我会尝试调查您的示例,如果发现任何问题,我会发布答案。 -
嘿感谢您的回信,我想我通过使用 %22 而不是引号解决了这个问题。非常感谢 good_words = ["%2这是一个短语%22", "%22这是另一个%22"]
-
谢谢!即使这是您的问题,也请将其作为答案发布并接受(我认为您必须等待一天才能接受)。这样,它将成为其他有相同问题的人的参考(例如将来某个时候我自己)。谢谢