gpt4 book ai didi

python - Tweepy Streaming API 返回 "None"以获取启用地理功能的推文的坐标

转载 作者:行者123 更新时间:2023-11-28 21:59:19 25 4
gpt4 key购买 nike

我正在使用 Tweepy 访问流式 API。我可以使用下面的代码获得结果,但对于 Geo Enabled 值为“True”的推文,我得到的坐标返回值为“False”。怎么会这样?我是否需要解码为 status.coordinates 返回的 JSON 对象?

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

这是一个示例结果输出:

Tweet Text: @aranone aran tu eres el mejor soy tu fanatico 1 me gusta tu musica.hey pana sique asi q vay bn te deseo lo mejor bro)

Time Stamp: 2013-05-30 23:36:38

Time Stamp: 2013-05-30 23:36:38

Source: web

Author: juandvd_96

Name: juan David Romero

Time Zone: Atlantic Time (Canada)

User Language: es

Followers: 365

User Description: hola soy juan david... soy una chico muy enamorado... y soy muy fekiz...

Geo Enabled: True

Friends: 1857

Retweets: 0

Location: veezuela maracaibo

ID: 481513551

Coordinates: None

Place: None

干杯,蓝光

感谢您的澄清。我刚才正在查看监听器并注意到一条推文,其中填充了坐标但作为 json 对象。我正在将推文写入 mysql 数据库,因为它们是流式传输的,似乎带有坐标信息的推文没有插入到数据库中。不确定 SQL 语句周围的错误是针对第一条还是第二条推文,发生错误的两列都设置为“varchar”值。这是流式传输结果:

推文文本:Vi 10 minutos y no pude ver mas。大 bean super cagona,dios。 Vay a ver otra.

时间戳:2013-06-04 01:08:57

时间戳:2013-06-04 01:08:57

来源:网络

作者:艾伦瓦利

姓名:Λili

时区:圣地亚哥

用户语言:es

追随者:384

用户描述:创造你的现实,否则它会为你创造

http://instagram.com/ailenvalli

地理启用:真

friend :338

转推:0

地点:704 East Broadway ▲ 1966

工号:200264965

坐标:无

地点:无

firehose_geo.py:87: 警告:字符串值不正确:第 1 行“名称”列的“\xCE\x9Bili”

(文本、status.created_at、status.created_at、来源、作者、姓名、时区、用户语言、关注者、用户描述、geo_enabled、 friend 、转推、位置、user_id、坐标、geo))firehose_geo.py:87:警告:不正确的字符串值:“\xE2\x96\xB2 19...”对于第 1 行的“位置”列

(文本、status.created_at、status.created_at、来源、作者、姓名、时区、用户语言、关注者、用户描述、地理启用、 friend 、转推、位置、用户 ID、坐标、地理))

推文文本:我有一种感觉,沃尔玛打算从我的钱包里掏一大笔钱。健康食品太贵了。

时间戳:2013-06-04 01:42:00

时间戳:2013-06-04 01:42:00

来源:Android 版 Twitter

作者:KaylaRenae21

姓名:†Kayla Renae'

时区:中部时间(美国和加拿大)

用户语言:zh

追随者:300

用户描述:喜欢做的事在城市里找不到。给我一根钓鱼竿,我会离开一整天。

地理启用:真

friend :437

转推:0

地点:俄克拉何马州

工号:282414509

坐标:{'type': 'Point', 'coordinates': [-96.6623549, 34.7918959]}

地点:{'type': 'Point', 'coordinates': [34.7918959, -96.6623549]}

最佳答案

问题与 tweepy 本身无关。

例如,查看此推文 (https://api.twitter.com/1/statuses/show.json?id=341458303064354817&include_entities=true) - 它已将 geo_enabled 设置为 true 而 geocoordinates放置 等于 null

根据 twitter docs :

geo_enabled: When true, indicates that the user has enabled the possibility of geotagging their Tweets.

因此,如果 geo_enabled 为真,推文数据中将包含位置信息并不是严格的规则。只需检查您的监听器中的 status.geostatus.coordinates 是否为 not None

希望对您有所帮助。

关于python - Tweepy Streaming API 返回 "None"以获取启用地理功能的推文的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16867504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com