tweepy(未经授权:401未经授权)

问题描述 投票:0回答:1

我想使用免费开发者帐户的 API 抓取推文。我对使用API进行抓取不太了解。

我用于抓取的代码是:

import tweepy

client = tweepy.Client(
    consumer_key='aaa',
    consumer_secret= 'aaa',
    access_token='bbb',
    access_token_secret='bbb'

)
client = tweepy.Client(consumer_key= consumer_key,consumer_secret= consumer_secret,access_token= access_token,access_token_secret= access_token_secret)
query = 'news'
tweets = client.search_recent_tweets(query=query, max_results=10)
for tweet in tweets.data:
    print(tweet.text)

错误

Unauthorized                              Traceback (most recent call last)
<ipython-input-27-cdd309f625b4> in <cell line: 12>()
     10 client = tweepy.Client(consumer_key= consumer_key,consumer_secret= consumer_secret,access_token= access_token,access_token_secret= access_token_secret)
     11 query = 'news'
---> 12 tweets = client.search_recent_tweets(query=query, max_results=10)
     13 for tweet in tweets.data:
     14     print(tweet.text)

2 frames
/usr/local/lib/python3.10/dist-packages/tweepy/client.py in request(self, method, route, params, json, user_auth)
     96                 raise BadRequest(response)
     97             if response.status_code == 401:
---> 98                 raise Unauthorized(response)
     99             if response.status_code == 403:
    100                 raise Forbidden(response)

Unauthorized: 401 Unauthorized
Unauthorized

我尝试使用以下代码更新 API 的状态:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
api.update_status("Hello Tweepy")

使用上述代码更新状态后,我再次运行推文搜索代码进行报废,但当我运行代码时,我收到一条错误消息。我不知道为什么会发生这种情况。我的开发者应用程序具有读取和写入权限生成的密钥。

enter image description here

任何人都可以指导我如何删除此错误并抓取推文吗?

python web-scraping tweepy
1个回答
1
投票

抱歉,您无法使用 Twitter API 上的 Free Level Access 抓取推文(搜索推文)。

您可以在免费级别访问上使用管理推文用户查找功能。

对于搜索推文功能,您必须升级到基本级别

调用 Twitter API v2 的语法是:

# Authenticate to Twitter
client = tweepy.Client(
    consumer_key=CONSUMER_KEY,
    consumer_secret=CONSUMER_SECRET,
    access_token=ACCESS_TOKEN,
    access_token_secret=ACCESS_TOKEN_SECRET
)

# Post Tweet
message = "Hello Twitter"
client.create_tweet(text=message)

# Search Recent Tweets (This requires Basic Level Access)
query = 'QUERY'
tweets = client.search_recent_tweets(query=query, max_results=10)
for tweet in tweets.data:
    print(tweet.text)

在第二个代码片段中,您尝试调用 Twitter API v1.1,该 API 只能用于媒体上传

Media Upload 调用 Twitter API v1.1 的正确语法是:

# Authenticate to Twitter
auth = tweepy.OAuth1UserHandler(
CONSUMER_KEY, CONSUMER_SECRET,
ACCESS_TOKEN, ACCESS_TOKEN_SECRET
)

# Create API object
api = tweepy.API(auth)

# Upload Image
media = api.media_upload("tweet_img.png")

欲了解更多信息:

https://developer.twitter.com/en/docs/twitter-api

https://docs.tweepy.org/en/v4.14.0/client.html#tweepy.Client.search_recent_tweets

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.