如何在 Tweepy 中为 API.search 的地理编码参数指定多个坐标

Posted

技术标签:

【中文标题】如何在 Tweepy 中为 API.search 的地理编码参数指定多个坐标【英文标题】:How to specify more than one coordinates for geocode parameter of API.search in Tweepy 【发布时间】:2021-06-29 13:08:31 【问题描述】:

我想根据多个坐标搜索推文。所以,我尝试了这个,但它没有返回任何结果:

total = 0
for status in tweepy.Cursor(api.search, q='cricket', lang="en",
                            geocode="24.8607,67.0011,25mi OR 40.7128,74.0060,20mi"
                           ).items(10):
    total+=1

print(total)

【问题讨论】:

【参考方案1】:

@Tayyap Mazhar 分享该帖子已经有一段时间了,但以防万一,下面的代码将按预期工作。请记住,声明 geoc 变量时不要使用逗号!

import tweepy
import pandas as pd

CONSUMER_KEY = "?"
CONSUMER_SECRET = "?"
OAUTH_TOKEN = "?"
OAUTH_TOKEN_SECRET = "?"

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(OAUTH_TOKEN, OAUTH_TOKEN_SECRET)
auth.secure = True
api = tweepy.API(auth, wait_on_rate_limit=True,
wait_on_rate_limit_notify=True)

if (not api):
    print ("Can’t Authenticate")
    sys.exit(-1)

tweet_lst=[]
geoc=[('41.0,28.9499962,1km'),('41.1062629083,29.0264182277,1km'),('41.072833042,29.022833242,1km'),('41.05,28.91,1km')]


for geocode in geoc:
    for tweet in tweepy.Cursor(api.search,geocode=geocode).items(1000):
        tweetDate = tweet.created_at.date()
        if(tweet.coordinates !=None):
            tweet_lst.append([tweetDate,tweet.id,tweet.
            coordinates['coordinates'][0],
            tweet.coordinates['coordinates'][1],
            tweet.user.screen_name,
            tweet.user.name, tweet.text,
            tweet.user._json['geo_enabled']])
            tweet_df = pd.DataFrame(tweet_lst, columns=['tweet_dt', 'id', 'long','lat','username', 'name', 'tweet','geo'])```

【讨论】:

以上是关于如何在 Tweepy 中为 API.search 的地理编码参数指定多个坐标的主要内容,如果未能解决你的问题,请参考以下文章

如何忽略已在 Tweepy 中转发的推文?

Tweepy 没有返回给定数量的推文

使用 Tweepy 的 Twitter 错误代码 429

Python,tweepy流

当流媒体推文时,如何在Twitter Api中使用tweet_mode ='extended'?

如何在 Python 上使用 Tweepy 创建 Twitter 线程