首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tweepy流API在启用地理的tweet上返回坐标"None“

Tweepy流API在启用地理的tweet上返回坐标"None“
EN

Stack Overflow用户
提问于 2013-05-31 23:39:17
回答 1查看 8.5K关注 0票数 3

我正在使用Tweepy访问流API。我能够在下面的代码中获得结果,但是对于Geo启用值为"True“的tweet,我得到的坐标返回值为"False”。这怎么可能呢?我需要解码为status.coordinates返回的JSON对象吗?

代码语言:javascript
复制
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import random
import time
import MySQLdb
import json

consumer_key="XXX"
consumer_secret="XXX"

access_token="XXX"
access_token_secret="XXX"

db=MySQLdb.connect(host='localhost', user='XXX', passwd='XXX', db='twitter')
db.set_character_set('utf8')

Coords = dict()
Place = dict()
PlaceCoords = dict()
XY = []
curr=db.cursor()

class StdOutListener(StreamListener):
    """ A listener handles tweets that are the received from the stream.
    This is a basic listener that inserts tweets into MySQLdb.
    """
    def on_status(self, status):

        print "Tweet Text: ",status.text

        text = status.text

        print "Time Stamp: ",status.created_at

        print "Time Stamp: ",status.created_at

        print "Source: ",status.source

        source = status.source

        print "Author: ",status.user.screen_name

        author = status.user.screen_name

        print "Name: ",status.user.name

        name = status.user.name

        print "Time Zone: ",status.user.time_zone

        time_zone = status.user.time_zone

        print "User Language: ",status.user.lang

        user_language = status.user.lang

        print "Followers: ",status.user.followers_count

        followers = status.user.followers_count

        print "User Description: ",status.user.description

        user_description = status.user.description

        print "Geo Enabled: ",status.user.geo_enabled

        geo_enabled = status.user.geo_enabled

        print "Friends: ",status.user.friends_count

        friends = status.user.friends_count

        print "Retweets: ",status.retweet_count

        retweets = status.retweet_count

        print "Location: ",status.user.location

        location = status.user.location

        print "ID: ",status.user.id_str

        user_id = status.user.id_str

        print "Coordinates: ",status.coordinates

        coordinates = status.coordinates

        print "Place: ",status.place

        place = status.place

下面是一个示例结果输出:

推特文本:@aranone aran tu eres el mejor soy 1 me gusta tu musica.hey pana sique asi vay te te deseo lo mejor bro) 时间邮票: 2013-05-30 23:36:38 时间邮票: 2013-05-30 23:36:38 资料来源: web 作者: juandvd_96 姓名: juan David Romero 时区:大西洋时间(加拿大) 用户语言: es 追随者: 365人 用户描述:胡安·大卫.酱油.你的豆浆. 启用Geo :真 朋友:1857年 转发:0 地点:韦苏拉·马拉开博 ID: 481513551 坐标:无 地点:无

干杯,BD

谢谢你澄清。我刚才正在查看侦听器,并注意到一条推文,其中包含坐标,但作为json对象。我正在将tweet写到mysql db上,因为它们是流的,而且似乎没有将具有坐标信息的tweet插入数据库。不确定SQL语句周围的错误是用于第一条还是第二条tweet,发生错误的两列都被设置为'varchar‘值。以下是流的结果:

Tweet文本: Vi,10分钟,不接受圣诞节。大豆超级卡戈纳,再见。从一片土地上。

时间邮票: 2013-06-04 01:08:57

时间邮票: 2013-06-04 01:08:57

资料来源: web

作者:阿伦瓦利

姓名:Λili

时区:圣地亚哥

用户语言: es

追随者: 384人

用户描述:创建您的实相,否则它将为您创建。

http://instagram.com/ailenvalli

启用Geo :真

朋友: 338

转发:0

地点:东百老汇▲704 1966年

ID: 200264965

坐标:无

地点:无

firehose_geo.py:87:警告:不正确的字符串值:'\xCE\x9Bili‘表示列'Name’在第1行

(文本,status.created_at,status.created_at,源,作者,名称,time_zone,user_language,追随者,user_description,geo_enabled,朋友,转发,位置,user_id,坐标,地理位置) firehose_geo.py:87:警告:不正确的字符串值:'\xE2\x96\xB2 19.‘用于第1行的“位置”列

(文本、status.created_at、status.created_at、源、作者、姓名、time_zone、user_language、追随者、user_description、geo_enabled、朋友、转发、位置、user_id、坐标、地理位置)

推特短信:我有一种感觉,WalMart正准备从我的钱包里拿出一大块。健康食品太贵了。

时间邮票: 2013-06-04 01:42:00

时间邮票: 2013-06-04 01:42:00

资料来源: Android推特

作者: KaylaRenae21

姓名:†Kayla Renae‘

时区:中央时间(美国及加拿大)

用户语言: en

追随者: 300人

用户描述:我喜欢做的事情在城市里找不到。给我一根钓竿&我一整天都要走了。

启用Geo :真

朋友: 437

转发:0

地点:俄克拉荷马州

ID: 282414509

坐标:{“类型”:“点”,“坐标”:-96.6623549,34.7918959}

位置:{“类型”:“点”,“坐标”:34.7918959,-96.6623549}

EN

回答 1

Stack Overflow用户

发布于 2013-06-03 07:42:54

这个问题与tweepy本身无关。

例如,请参见这条tweet (entities=true) --它将geo_enabled设置为true,而geocoordinatesplace则等于null

根据twitter文档

geo_enabled:如果为真,则表示用户已经启用了在Tweets上进行地理定位的可能性。

因此,如果geo_enabled是真的,在推特数据中有位置信息并不是一个严格的规则。只需检查侦听器中的status.geostatus.coordinates是否为not None

希望这能有所帮助。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16867504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档