Tweepy取得与特定国家/地区相关的推文

时间:2019-06-04 06:43:34

标签: python twitter tweepy

上下文

我正在为Twitter项目进行主题建模。 这个想法是检索与特定国家/地区相关的所有推文,并对其进行分析,以便发现特定国家/地区的人们在Twitter上正在谈论什么。

我尝试过的事情

1。第一个解决方案

我知道我们可以使用Twitter流API或游标从特定国家/地区检索推文,并且我尝试了以下代码来获取给定国家/地区地理坐标的所有推文。

我写了以下代码:

def get_tweets(query_fname, auth, max_time, location=None):
    stop = datetime.now() + max_time
    twitter_stream = Stream(auth, CustomListener(query_fname))
    while datetime.now() < stop:
        if location:
            twitter_stream.filter(locations=[11.94,-13.64,30.54,5.19], is_async=True)
        else:
            twitter_stream.filter(track=query, is_async=True)

这种方法的问题

  1. 并不是每个人都允许Twitter访问其位置详细信息,并且通过这种方法,我只能获得几条类似我的位置的300条推文。

  2. 有些人不在该国,但在推特上发了推文,该国中的人回复了他们。他们的推文没有被这种方法捕获。

2。第二种解决方案

另一种方法是使用带有光标的国家/地区收集带有#标签的推文

我已经尝试过此代码:

def query_tweet(client, query=[], max_tweets=2000, country=None):
    """
    query tweets using the query list pass in parameter
    """
    query = ' OR '.join(query)
    name = 'by_hashtags_'
    now = datetime.now()
    today = now.strftime("%d-%m-%Y-%H-%M")
    with open('data/query_drc_{}_{}.jsonl'.format(name, today), 'w') as f:
        for status in Cursor(
                client.search,
                q=query,
                include_rts=True).items(max_tweets):
            f.write(json.dumps(status._json) + "\n")

问题

与第一种方法相比,这种方法产生的结果更多,但您可能会注意到,并不是每个人都使用这些主题标签发布有关该国家的推文。

3。第三种方法

我尝试使用特定于某个国家/地区的地点ID来检索该推文,但与第一种方法存在相同的问题。

我的问题

  • 如何检索有关特定国家/地区的所有推文?我的意思是人们在推特上针对特定国家/地区的所有推文,都带有或不带有特定国家/地区的标签?

提示:对于不在该国的人来说,如果该国内的人回复或转发了他们的推文,则可能是个好主意。

致谢。

0 个答案:

没有答案