gpt4 book ai didi

python - 如何使用 Python 检索给定用户的所有推文和属性?

转载 作者:太空狗 更新时间:2023-10-29 18:04:55 25 4
gpt4 key购买 nike

我正在尝试从 Twitter 检索数据,使用 Tweepy 作为在命令行键入的用户名。我想提取相当多的关于状态和用户的数据,所以想出了以下内容:

请注意,我正在导入所有必需的模块,并且有 oauth + key (只是这里没有包括它)并且文件名是正确的,只是被更改了:

# define user to get tweets for. accepts input from user
user = tweepy.api.get_user(input("Please enter the twitter username: "))

# Display basic details for twitter user name
print (" ")
print ("Basic information for", user.name)
print ("Screen Name:", user.screen_name)
print ("Name: ", user.name)
print ("Twitter Unique ID: ", user.id)
print ("Account created at: ", user.created_at)

timeline = api.user_timeline(screen_name=user, include_rts=True, count=100)
for tweet in timeline:
print ("ID:", tweet.id)
print ("User ID:", tweet.user.id)
print ("Text:", tweet.text)
print ("Created:", tweet.created_at)
print ("Geo:", tweet.geo)
print ("Contributors:", tweet.contributors)
print ("Coordinates:", tweet.coordinates)
print ("Favorited:", tweet.favorited)
print ("In reply to screen name:", tweet.in_reply_to_screen_name)
print ("In reply to status ID:", tweet.in_reply_to_status_id)
print ("In reply to status ID str:", tweet.in_reply_to_status_id_str)
print ("In reply to user ID:", tweet.in_reply_to_user_id)
print ("In reply to user ID str:", tweet.in_reply_to_user_id_str)
print ("Place:", tweet.place)
print ("Retweeted:", tweet.retweeted)
print ("Retweet count:", tweet.retweet_count)
print ("Source:", tweet.source)
print ("Truncated:", tweet.truncated)

我希望最终遍历用户的所有推文(最多 3200 个)。首先是第一件事。到目前为止,虽然我有两个问题,但我收到以下有关转推的错误消息:

Please enter the twitter username: barackobamaTraceback (most recent call last):
File " usertimeline.py", line 64, in <module>
timeline = api.user_timeline(screen_name=user, count=100, page=1)
File "C:\Python32\lib\site-packages\tweepy-1.4-py3.2.egg\tweepy\binder.py", line 153, in _call
raise TweepError(error_msg)
tweepy.error.TweepError: Twitter error response: status code = 401
Traceback (most recent call last):
File "usertimeline.py", line 42, in <module>
user = tweepy.api.get_user(input("Please enter the twitter username: "))
File "C:\Python32\lib\site-packages\tweepy-1.4-py3.2.egg\tweepy\binder.py", line 153, in _call
raise TweepError(error_msg)
tweepy.error.TweepError: Twitter error response: status code = 404

将用户名作为变量传递似乎也是一个问题:

Traceback (most recent call last):
File " usertimleline.py", line 64, in <module>
timeline = api.user_timeline(screen_name=user, count=100, page=1)
File "C:\Python32\lib\site-packages\tweepy-1.4-py3.2.egg\tweepy\binder.py", line 153, in _call
raise TweepError(error_msg)
tweepy.error.TweepError: Twitter error response: status code = 401

我已将这两个错误隔离开来,即它们无法协同工作。

请原谅我的无知,我对 Twitter API 不是很感兴趣,但学习速度非常快。 Tweepy 文档确实很糟糕,我已经在网上进行了大量阅读,但似乎无法解决这个问题。如果我能解决这个问题,我会发布一些文档。

我知道如何在提取数据后将数据传输到 MySQL 数据库(它会这样做,而不是打印到屏幕上)并操作它以便我可以用它做一些事情,我只是把它拿出来的问题。有没有人有任何想法或者我应该考虑另一种方法?

非常感谢任何帮助。干杯

编辑:

根据@Eric Olson 今天早上的建议;我做了以下事情。

1) 创建了一套全新的 Oauth 凭据进行测试。2) 将代码复制到新脚本,如下所示:

授权

consumer_key = "(removed)"
consumer_secret = "(removed)"
access_key="88394805-(removed)"
access_secret="(removed)"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api=tweepy.API(auth)



# confirm account being used for OAuth
print ("API NAME IS: ", api.me().name)
api.update_status("Using Tweepy from the command line")

我第一次运行脚本时,它运行良好并更新了我的状态并返回 API 名称如下:

>>> 
API NAME IS: Chris Howden

然后从那时起我得到了这个:

Traceback (most recent call last):
File "C:/Users/Chris/Dropbox/Uni_2012-3/6CC995 - Independent Studies/Scripts/get Api name and update status.py", line 19, in <module>
api.update_status("Using Tweepy frm the command line")
File "C:\Python32\lib\site-packages\tweepy-1.4-py3.2.egg\tweepy\binder.py", line 153, in _call
raise TweepError(error_msg)
tweepy.error.TweepError: Twitter error response: status code = 403

我能看到它做这样的事情的唯一原因是它拒绝生成的访问 token 。我不需要更新访问 token 吗?

最佳答案

如果您愿意尝试另一个图书馆,您可以提供 rauth一个镜头。已经有 a Twitter example但是,如果您觉得懒惰并且只想要一个工作示例,那么我将按照以下方式修改该演示脚本:

from rauth import OAuth1Service

# Get a real consumer key & secret from https://dev.twitter.com/apps/new
twitter = OAuth1Service(
name='twitter',
consumer_key='J8MoJG4bQ9gcmGh8H7XhMg',
consumer_secret='7WAscbSy65GmiVOvMU5EBYn5z80fhQkcFWSLMJJu4',
request_token_url='https://api.twitter.com/oauth/request_token',
access_token_url='https://api.twitter.com/oauth/access_token',
authorize_url='https://api.twitter.com/oauth/authorize',
base_url='https://api.twitter.com/1/')

request_token, request_token_secret = twitter.get_request_token()

authorize_url = twitter.get_authorize_url(request_token)

print 'Visit this URL in your browser: ' + authorize_url
pin = raw_input('Enter PIN from browser: ')

session = twitter.get_auth_session(request_token,
request_token_secret,
method='POST',
data={'oauth_verifier': pin})

params = {'screen_name': 'github', # User to pull Tweets from
'include_rts': 1, # Include retweets
'count': 10} # 10 tweets

r = session.get('statuses/user_timeline.json', params=params)

for i, tweet in enumerate(r.json(), 1):
handle = tweet['user']['screen_name'].encode('utf-8')
text = tweet['text'].encode('utf-8')
print '{0}. @{1} - {2}'.format(i, handle, text)

您可以按原样运行它,但请务必更新凭据!这些仅用于演示目的。

完全公开,我是 rauth 的维护者。

关于python - 如何使用 Python 检索给定用户的所有推文和属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15628535/

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