API поиска в Твиттере, использующий регулярное выражение для фильтрации твитов: «твиты не найдены» - PullRequest
0 голосов
/ 29 декабря 2018

В настоящее время я пытаюсь создать 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 голосов
/ 30 декабря 2018

К сожалению, регулярные выражения здесь не работают.Это потому, что q= ожидает, что строка пройдет, и, таким образом, не будет интерпретировать передаваемое вами регулярное выражение, вместо этого я считаю, что это либо просто ошибка, либо re.compile(regex here) в качестве самой строки, что, конечно,, вряд ли приведёт ко многим, если вообще будет, результатам.

Так что, похоже, ваш текущий метод не сработает.Обходным путем может быть использование стандартных операторов Twitter .Вы можете создавать строки, используя операции фильтрации, которые при передаче в Cursor, по сути, действуют так же, как и ваше регулярное выражение.Имейте в виду, что существуют ограничения на количество символов, и слишком сложные запросы также могут быть отклонены.Вы можете найти подробности об этом в поисковых твитах docs .

Другим вариантом может быть достаточно общий поиск, а затем использование вашего регулярного выражения для фильтрации результатов.Отвечающий на довольно схожий вопрос, как и ваш, делится некоторыми статьями здесь .

Надежда, которая помогает и направляет вас на правильный путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...