按位置过滤推文

Posted

技术标签:

【中文标题】按位置过滤推文【英文标题】:Filtering Tweets By Location 【发布时间】:2015-05-27 23:43:22 【问题描述】:

我正在尝试修改此脚本,以仅保存附有位置的推文的 JSON,并且遇到了 Python 问题,在该问题中检查某些内容是否为空似乎不起作用。 Has Key 无法正常工作,因为它们都有密钥,其中大多数只是“空”。 Is not None 不起作用,因为 Python 认为 null 和 None 是不同的,并且将其作为文本检查为不是“null”也不起作用。有没有人对如何解决这个问题有一个聪明的想法?

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import pymongo
import tweepy
import json


#Variables that contains the user credentials to access Twitter API 
access_key = '' #redacted for privacy and such
access_secret = ''
consumer_key = ''
consumer_secret = ''

#Runs auth to Twitter API
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)


#This is a basic listener that will print incoming data to stdout
class StdOutListener(StreamListener):

    def on_data(self, data):
        print data
        return True

    def on_error(self, status):
        print status


#Customizes the stream and saves text and lang to databases 
class CustomStreamListener(tweepy.StreamListener):
    def __init__(self, api):
        self.api = api
        super(tweepy.StreamListener, self).__init__()
        self.db = pymongo.MongoClient('localhost', 27017).crime



    def on_data(self, data):
        jd = json.loads(data)
        if jd.has_key('coordinates') :
            self.db.tweets.insert(  'text' : jd['text'], 'coordinates' : jd['coordinates'], 'lang' : jd['lang']  )




    def on_error(self, status_code):
        return True # Don't kill the stream

    def on_timeout(self):
        return True # Don't kill the stream

#Calls on StreamListerner and provides specifications of tracking
l = tweepy.streaming.Stream(auth, CustomStreamListener(api))
l.filter(track=['guns'])

【问题讨论】:

【参考方案1】:

您可以尝试检查字符串的长度:

if len( jd['coordinates'] ) > 1:
    self.db.tweets.insert(  'text' : jd['text'], 'coordinates' : jd['coordinates'], 'lang' : jd['lang']  )

【讨论】:

以上是关于按位置过滤推文的主要内容,如果未能解决你的问题,请参考以下文章

按推文位置和用户位置抓取推文

地理位置:按邻近度过滤

magento 按位置排序过滤器选项

使用Tweety中的user_timeline按文本过滤推文

sql 按地理位置搜索过滤器。

如何确定推文的位置(坐标)