微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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)

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。