Tweepy:收集两个搜索词列表中每个词至少包含 1 个词的推文

问题描述

我正在使用 Tweepy 及其光标来收集具有特定搜索词的推文。我的目标是在两个不同的主题上有两个单词列表,例如用关于爱的词列出 1,用关于健康的词列出 2。然后我想搜索每条推文至少包含列表 1 中的一个单词和列表 2 中的至少一个单词。我的问题是我什至无法运行仅使用一个列表的搜索

所以我有以下代码

# extracting words from a csv-file
file_loc1 = "search_words/love.xlsx"
love_words = pd.read_excel(file_loc1,index_col=None,na_values=['NA'],usecols = "A",skiprows=11)
love_words = str(love_words['love'].values)

# converting the list to readable search terms (there are probably more elegant ways...)
love_words = love_words.lower()
love_words = love_words.replace("\r","")
love_words = love_words.replace("\n","")
love_words = love_words.replace("' '"," OR ")
love_words = love_words.replace("[","")
love_words = love_words.replace("]","")
love_words = love_words.replace("'","")

search_words = love_words + " -filter:retweets"
date_since = "2020-01-01"

tweets = tw.Cursor(api.search,q=search_words,lang="en",since=date_since).items(5000)

tweet_text = [tweet.text for tweet in tweets]

所以我从一个 csv 文件中检索单词并将它们全部放入一个字符串中,最终看起来像这样:word1 OR word2 OR word3 -filter:retweets。 如果只有两三个词,它似乎有效,我收到了很多推文。但是,如果我使用更多术语,则不会收到任何推文。似乎 OR 运算符可能不像我认为的那样工作......最后我想要像 (love1 OR love2 OR love3 OR ...) AND (health1 OR health2 OR ...) 这样的搜索,以便我得到包含一个或多个单词的推文两个列表。

我希望这个解释是有道理的。有什么建议么?谢谢!

解决方法

我已经实现了 Tweepy,但发现 OR 运算符不够用。我所做的是单独搜索每个关键字并收集所有推文:

tweet_list = []
for word in keyword_list:
    tweets = api.search(word)
    tweet_list.append(tweets)

然后,在我获得所有推文后,我会过滤它们是否包含我感兴趣的词。

这效率不高,也不可能是最佳解决方案。但它对我有用。