Twitter搜索API,使用正则表达式过滤推文:“未找到推文”

时间:2018-12-29 14:01:29

标签: python twitter tweepy

我目前正在尝试制作一个Twitter机器人,该机器人应该回复一条推文,并使用正则表达式对其进行过滤并进行回复。 相关代码如下:

questionRegex = re.compile(regex here)
def searchWeatherRequest(weatherReport) :
    for tweet in tweepy.Cursor(api.search,
                                q=questionRegex,
                                lang="en",
                                since=today).items(1):
        try:
            tweetId = tweet.user.id
            username = tweet.user.screen_name
            print ('\Tweet by: @' + username)
            tweet.retweet()
            api.update_status("@" + username + "Today's weather" + weatherReport)
            print (tweet.text)
        except tweepy.TweepError as e:
            print (e.reason)
        except StopIteration:
            break

    time.sleep(3600)

但是,每当我运行代码时,我都会收到消息“未找到任何推文”(即使发布了与正则表达式匹配的推文,所以我知道这不仅是因为根本没有与之匹配的推文)。 我还尝试了分步过滤这些推文(首先,我仅使用一个单词过滤推文,然后使用正则表达式过滤那些推文),但这也不起作用。 有谁知道我在做什么错。我阅读了多篇文章和与此有关的问题,但似乎没有一种解决方案有效。 我读了一个问题,您不能使用正则表达式过滤推文,但其他问题则建议否则。您是真的不能使用正则表达式,还是我遇到一个简单的编码错误?

1 个答案:

答案 0 :(得分:1)

不幸的是,正则表达式在这里不起作用。这是因为q=期望一个字符串通过,因此不会干扰您正在传递的正则表达式,相反,我认为它要么只是错误,要么将re.compile(regex here)当作字符串本身,这当然不会带来很多结果-如果有的话。

因此,您当前的方法似乎无法使用。解决方法可能是使用Twitter's standard operators。您可以使用过滤器操作构建字符串,这些操作在传递给Cursor时,其行为与正则表达式基本相同。请记住,尽管存在字符限制,而且过于复杂的查询也可能会被拒绝。您可以在search tweets docs中找到详细信息。

另一种选择是进行相当常规的搜索,然后从那里使用正则表达式过滤结果。与您的问题相当相似的问题的回答者分享了一些文章here

希望能帮助您并使您走上正确的道路。