【发布时间】:2018-11-19 14:35:29
【问题描述】:
我正在从特定区域获取推文,但我得到的结果集非常不同。第一种方法是在给定半径内给出经度和纬度。这些是城市(拉合尔,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 geo search api,通过查询Lahore,粒度=“city”。现在我正在获取整个城市的推文。但现在我一天只收到 1200 条推文。我还从过去 7 天中提取了 15,000 条推文。这是一个非常大的区别,整个城市只给了我 1200 条推文,而同一个城市的一小部分给了我超过 60,000 条推文。我还打印了地点 ID 以验证我是否获得了准确的多边形。这些是多边形( 74.4493870, 31.4512220 74.4493870, 31.6124170 74.2675860, 31.6124170 74.2675860, 31.4512220) 我在https://www.keene.edu/ 上画了这些来验证。是的,这些是拉合尔市的准确多边形。
方法2
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 docs 和 tweepy docs 来研究这些 api 如何在后台工作以收集特定区域的推文,但我没有找到任何有用的材料。
【问题讨论】:
标签: python twitter geolocation geocoding tweepy