代码之家  ›  专栏  ›  技术社区  ›  A.S.J

使用regex过滤tweets的twitter搜索API:“未找到tweets”

  •  0
  • A.S.J  · 技术社区  · 6 年前

    我目前正在尝试制作一个twitter bot,它应该回复一条tweet,它使用regex过滤,然后回复它。 相关代码如下:

    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)
    

    但是每当我运行代码时,我都会收到消息“没有找到tweet s”(即使在发布了与regex匹配的tweet之后,我也知道这不仅仅是因为没有与之匹配的tweet s)。 我还尝试了按步骤过滤tweet(首先,我只使用一个词过滤tweet,然后使用regex过滤这些tweet),但这也不起作用。 有人知道我做错了什么吗?我读了很多关于这个的文章和问题,但是没有一个解决方案是有效的。 我读到一个问题,你不能用regex过滤tweet,但其他的答案却另有建议。你真的不能使用regex,还是我遇到了一个简单的编码错误?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Generic Snake    6 年前

    不幸的是,正则表达式在这里不起作用。这是因为 q= 期望一个字符串通过,这样就不会影响您正在传递的regex,相反,我相信它要么是错误的,要么是 re.compile(regex here) 作为一个字符串本身,当然,不太可能出现很多结果(如果有的话)。

    所以你目前的方法似乎行不通。一个解决方法可能正在使用 Twitter's standard operators . 您可以使用过滤操作构建字符串,当传递给光标时,过滤操作的作用基本上与regex的作用相同。请记住,虽然存在字符限制,但过于复杂的查询也可能被拒绝。您可以在 search tweets docs .

    另一个选择是进行一个相当普通的搜索,然后从中使用regex来过滤结果。回答一个相当类似问题的人和你分享了一些文章 here .

    希望这能帮助你走上正确的道路。