我正在获取一个特定区域的推文,但是得到了非常不同的结果集。第一种方法是通过给出给定半径内的经度和纬度来实现的。这些经度和纬度在城市(Lahore,PK)内,并绘制了5公里的半径。5公里只是该城市的很小一部分。通过这种方法,我获取了一天内约60,000条推文。
方法1
import tweepy
consumer_key= 'xxxxxxxxxxxxxx'
consumer_secret= 'xxxxxxxxxxxxx'
access_token='xxxxxxxxxxxxxxx'
access_token_secret='xxxxxxxxxxxxxxxxxxxx'
api = tweepy.API(auth,wait_on_rate_limit = Truewait_on_rate_limit_notify= True)
public_tweets = tweepy.Cursor(api.search, count=100, geocode="31.578871,74.305184,5km",since="2018-06-09",show_user = True,tweet_mode="extended").items()
for tweet in public_tweets:
print(tweet.full_text)
第二种方法,我使用了Twitter地理搜索API,通过查询拉合尔(granularity="city"),现在我正在获取整个城市的推文。但是现在我只能得到一天中1200条推文。我还从过去7天中获取了15000条推文,这是一个非常大的差异,整个城市只给了我1200条推文,而同一城市的小部分却给了我超过60000条推文。我还打印了场所ID以验证我是否获得了准确的多边形。这些是多边形( 74.4493870, 31.4512220 74.4493870, 31.6124170 74.2675860, 31.6124170 74.2675860, 31.4512220),我在https://www.keene.edu/上进行了绘制以验证。是的,这些是拉合尔市的准确多边形。
import tweepy
consumer_key= 'xxxxxxxxxxxxxx'
consumer_secret= 'xxxxxxxxxxxxx'
access_token='xxxxxxxxxxxxxxx'
access_token_secret='xxxxxxxxxxxxxxxxxxxx'
api = tweepy.API(auth,wait_on_rate_limit = Truewait_on_rate_limit_notify= True)
places = api.geo_search(query="Lahore", granularity="city")
for place in places:
print("placeid:%s" % place)
public_tweets = tweepy.Cursor(api.search, count=100,q="place:%s" % place.id,since="2018-06-09",show_user = True,tweet_mode="extended").items()
for tweet in public_tweets:
print(tweet.full_text)
现在请您先告诉我,为什么结果会有如此大的差异。我正在使用标准的API版本。
其次,请告诉我这些API是如何获取推文的。因为少于1%的推文带有地理标记,并且也不是每个用户在他们的个人资料中都准确地注明了城市和国家。一些用户会提到像火星和地球这样的事物。那么这些API是如何工作以在特定区域内获取推文的呢?它们是通过在半径范围内搜索或查询城市/国家来实现的吗?我研究了Twitter API文档和Tweepy文档,以了解这些API是如何在后台收集特定区域的推文的,但我没有找到任何有用的材料。