解析用户名以提取用户位置 Twitter

Posted

技术标签:

【中文标题】解析用户名以提取用户位置 Twitter【英文标题】:Parse User name for extracting user location Twitter 【发布时间】:2016-07-22 10:24:48 【问题描述】:

我正在尝试从 twitter 中获取与用户名相关的用户位置。

输入:用户列表有超过50K个用户名

AkkiPritam,6.77E+17,12/15/2015,#chennaifloods
AkkiPritam,6.77E+17,12/15/2015,#bhoomikatrust
AkkiPritam,6.77E+17,12/15/2015,#akshaykumar
gischethans,6.77E+17,12/15/2015,#chennaifloods
mid_day,6.77E+17,12/15/2015,#bollywood
mid_day,6.77E+17,12/15/2015,#chennaifloods
Nanthivarman16,6.77E+17,12/15/2015,#admkfails
Nanthivarman16,6.77E+17,12/15/2015,#jayafails
Nanthivarman16,6.77E+17,12/15/2015,#stickergovt
Nanthivarman16,6.77E+17,12/15/2015,#chennaifloods
AdilaMatra,6.77E+17,12/15/2015,#chennaifloods
AdilaMatra,6.77E+17,12/15/2015,#climatechange
AdilaMatra,6.77E+17,12/15/2015,#delhichokes
AdilaMatra,6.77E+17,12/15/2015,#smog
HDFCERGOGIC,6.77E+17,12/15/2015,#chennaifloods
HDFCERGOGIC,6.77E+17,12/15/2015,#tnfloods
ImSoorej,6.77E+17,12/15/2015,#chennaifloods
ImSoorej,6.77E+17,12/15/2015,#chennaimicr

代码:我想查找地理位置,可能是地理坐标。

from __future__ import print_function
import tweepy
from tweepy import OAuthHandler
from tweepy import Stream
from tweepy.streaming import StreamListener
import pandas as pd
import csv

consumer_key = 'xyz'
consumer_secret = 'xyz'
access_token = 'xyz'
access_token_secret = 'xyz'

data = pd.read_csv('user_keyword.csv')
df = ['user_name', 'user_id', 'date', 'keyword']

def get_user_details(username):
        userobj = api.get_user(username)
        return userobj

if __name__ == '__main__':
    #authenticating the app (https://apps.twitter.com/)
    auth = tweepy.auth.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    api = tweepy.API(auth)

    username = df['user_name']
    userOBJ = get_user_details(username)
    print(userOBJ.location)

错误:无法将用户名解析为程序。

Traceback (most recent call last):
  File "user_profile_location.py", line 38, in <module>
    username = df['user_name']
TypeError: list indices must be integers, not str

【问题讨论】:

嗯。 df 不是字典,它是字符串列表——您需要使用整数索引访问 df 元素。 @ChitharanjanDas 谢谢!我要做什么改变?? 您的代码data = pd.read_csv('user_keyword.csv') 创建了DataFrame。 df = ['user_name', 'user_id', 'date', 'keyword'] 创建一个 Python 列表并将该列表分配给变量 df。如果您的 csv 的标题与列表中的项目匹配,那么您需要使用 data['user_name'] 我最好的建议是阅读熊猫 docs @toasteez csv 没有我要分配的标题 那么下面的答案就有了分配的解决方案 【参考方案1】:

您正在使用“数据”来定义您的 DataFrame 和“df”,我认为应该是 DataFrame 的列

data = pd.read_csv('user_keyword.csv')
df = ['user_name', 'user_id', 'date', 'keyword']

我假设 user_keyword.csv 文件没有标题,尝试添加:

data.columns = df

它会将列名更改为存储在 df 中的值。 然后稍后代替:

username = df['user_name']

试试:

username = data['user_name']

请记住,现在用户名是一整列,因此 get_user_details(username) 不应期待单个字符串。

【讨论】:

我收到此错误:`文件“user_profile_location.py”,第 40 行,在 userOBJ = get_user_details(username) 文件“user_profile_location.py”,第 29 行,在 get_user_details userobj = api .get_user(username) 文件“/usr/local/lib/python2.7/dist-packages/tweepy/binder.py”,第 245 行,在 _call 返回 method.execute() 文件“/usr/local/lib/python2 .7/dist-packages/tweepy/binder.py",第 229 行,执行 raise TweepError(error_msg, resp, api_code=api_error_code) tweepy.error.TweepError: [u'message': u'Could not authenticate you. ', u'code': 32]` userOBJ = get_user_details(username) 尝试用您的用户名替换用户名。如果这可行,那么它是因为您正在尝试验证您没有凭据的用户。

以上是关于解析用户名以提取用户位置 Twitter的主要内容,如果未能解决你的问题,请参考以下文章

使用正则表达式从 Twitter 数据中提取用户名

twitteR - 根据用户的位置构建用户图

PHP解析urlmailto和twitter™s用户名和参数

PHP Twitter - 打印用户的最新推文(PHP提取RSS源并链接链接)

Twitter JSON URLHashtag和用户解析器

如何告诉zend_auth用户登录的位置