首页 > 解决方案 > 如何使用 Tweepy 在 python 中过滤推文?

问题描述

下面是我的代码,其中我已经散列了所有不同的方法,我试图指定它应该只返回基于特定位置的推文,但所有方法都不起作用。

有人有什么想法吗?

wb_ehu = Workbook()

search_words = "Blue Bag"
new_search = search_words + " -filter:retweets"
date_since = "2020-06-01"

ws_ehu = wb_ehu.active
ws_ehu["A1"] = "Created_Date"
ws_ehu["B1"] = "Tweet"
ws_ehu["C1"] = "Username"
ws_ehu["D1"] = "Location"

for tweet in tweepy.Cursor(api.search, q=new_search, count=1000, tweet_mode="extended",
                       lang="en",
                       #Place= "London,UK"
                       #geo = [-0.127758, 51.507351]
                       #geo = [51.507351,-0.127758]
                       #geocode = [-0.127758, 51.507351]
                       #geocode = [51.507351,-0.127758]
                       #coordinates = [-0.127758, 51.507351]
                       #coordinates = [51.507351,-0.127758]
                       since=date_since).items():
    ws_ehu.append([tweet.created_at, tweet.full_text, tweet.user.screen_name, tweet.user.location ])

此外,我尝试指定从特定日期获取推文,但它永远不会返回超过当前月份的推文。

标签: pythontwittertweepy

解决方案


我已经能够使用日期时间和带有地理坐标的 if 语句来弄清楚它。

import datetime

wb_ehu = Workbook()
search_words = "Blue Bag"
new_search = search_words + " -filter:retweets"
startDate = datetime.datetime(2021, 6, 1, 0, 0, 0)
endDate =   datetime.datetime(2021, 7, 3, 0, 0, 0)

ws_ehu = wb_ehu.active
ws_ehu["A1"] = "Created_Date"
ws_ehu["B1"] = "Tweet"
ws_ehu["C1"] = "Username"
ws_ehu["D1"] = "Location"

for tweet in tweepy.Cursor(api.search, 
                       geocode= "51.507351,-0.127758,50mi",
                       q=new_search, count=1000, tweet_mode="extended",
                       lang="en",
                       ).items():
 if tweet.created_at < endDate and tweet.created_at > startDate:
    ws_ehu.append([tweet.created_at, tweet.full_text, 
                   tweet.user.screen_name, tweet.user.location ])

推荐阅读