gpt4 book ai didi

python - 无法使用推文 [Lat-Lon] 抓取地理坐标

转载 作者:太空狗 更新时间:2023-10-29 20:22:26 26 4
gpt4 key购买 nike

我正在尝试使用 Tweepy API 下载推文,但我无法在输出中获取地理坐标。

我正在寻找在输出数据中包含纬度和经度的方法。

感谢任何帮助..提前致谢。该代码是在 python 3.x 中开发的,输出打印屏幕附在代码下方。

我已经看到一些用户不共享位置详细信息,但我能够从该地理位置抓取数据,所以即使我能够通过程序在输出中包含经纬度,它也会很棒.

代码

import tweepy
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import pandas as pd
import json
import csv
import sys
import time

#reload(sys)
#sys.setdefaultencoding('utf8')

ckey = 'XXXXX'
csecret = 'XXXXXXX'
atoken = 'XXXXXX'
asecret = 'XXXXXX'

def toDataFrame(tweets):
# COnvert to data frame
DataSet = pd.DataFrame()

DataSet['tweetID'] = [tweet.id for tweet in tweets]
DataSet['tweetText'] = [tweet.text.encode('utf-8') for tweet in tweets]
DataSet['tweetRetweetCt'] = [tweet.retweet_count for tweet in tweets]
DataSet['tweetFavoriteCt'] = [tweet.favorite_count for tweet in tweets]
DataSet['tweetSource'] = [tweet.source for tweet in tweets]
DataSet['tweetCreated'] = [tweet.created_at for tweet in tweets]
DataSet['userID'] = [tweet.user.id for tweet in tweets]
DataSet['userScreen'] = [tweet.user.screen_name for tweet in tweets]
DataSet['userName'] = [tweet.user.name for tweet in tweets]
DataSet['userCreateDt'] = [tweet.user.created_at for tweet in tweets]
DataSet['userDesc'] = [tweet.user.description for tweet in tweets]
DataSet['userFollowerCt'] = [tweet.user.followers_count for tweet in tweets]
DataSet['userFriendsCt'] = [tweet.user.friends_count for tweet in tweets]
DataSet['userLocation'] = [tweet.user.location for tweet in tweets]
DataSet['userTimezone'] = [tweet.user.time_zone for tweet in tweets]
DataSet['Coordinates'] = [tweet.coordinates for tweet in tweets]
DataSet['GeoEnabled'] = [tweet.user.geo_enabled for tweet in tweets]
DataSet['Language'] = [tweet.user.lang for tweet in tweets]
tweets_place= []
#users_retweeted = []
for tweet in tweets:
if tweet.place:
tweets_place.append(tweet.place.full_name)
else:
tweets_place.append('null')
DataSet['TweetPlace'] = [i for i in tweets_place]
#DataSet['UserWhoRetweeted'] = [i for i in users_retweeted]

return DataSet

OAUTH_KEYS = {'consumer_key':ckey, 'consumer_secret':csecret,'access_token_key':atoken, 'access_token_secret':asecret}
#auth = tweepy.OAuthHandler(OAUTH_KEYS['consumer_key'], OAUTH_KEYS['consumer_secret'])
auth = tweepy.AppAuthHandler('XXXXXXXX', 'XXXXX')

api = tweepy.API(auth, wait_on_rate_limit=True,wait_on_rate_limit_notify=True)
if (not api):
print ("Can't Authenticate")
sys.exit(-1)
else:
print ("Scraping data now") # Enter lat and long and radius in Kms q='ganesh'
cursor = tweepy.Cursor(api.search,geocode="23.50000,91.16000,50km",since='2017-09-01',until='2017-09-05',lang='en',count=10000)
results=[]
for item in cursor.items(1000): # Remove the limit to 1000
results.append(item)


DataSet = toDataFrame(results)
DataSet.to_csv('Agartala_sep_1_4.csv',index=False)
print ("Completed.. !!")

输出:

enter image description here

最佳答案

如果你的 tweet.coordinates 不是 None,那么它就是监听器返回的 geoJSON 对象。如果 csv 编写器不知道如何处理该对象,它似乎可能只是为该行写入一个空白。

您可以尝试将对象解析为纬度和经度,并将每个对象保存在不同的列中。或者以其他方式转换对象来表示它,以便您的 DataFrame 可以将其写入 csv。

也许是这样的:

longitude, latitude = tweet.coordinates["coordinates"]["coordinates"]

关于python - 无法使用推文 [Lat-Lon] 抓取地理坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46044445/

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