python - twitter 完整档案搜索 python
问题描述
尝试使用 python 使用 twitter 的完整存档搜索。
基于此代码:http ://benalexkeen.com/interacting-with-the-twitter-api-using-python/
我使用下面的代码没有成功
client_key = 'ZRNUXXXXXXXXXXXXXXXXXXXXXV0MTtQ'
client_secret = 'AypUFYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYAJww30xJI8'
import base64
key_secret = '{}:{}'.format(client_key, client_secret).encode('ascii')
b64_encoded_key = base64.b64encode(key_secret)
b64_encoded_key = b64_encoded_key.decode('ascii')
import requests
base_url = 'https://api.twitter.com/'
auth_url = '{}oauth2/token'.format(base_url)
auth_headers = {
'Authorization': 'Basic {}'.format(b64_encoded_key),
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
auth_data = {
'grant_type': 'client_credentials'
}
auth_resp = requests.post(auth_url, headers=auth_headers, data=auth_data)
auth_resp.status_code
# Keys in data response are token_type (bearer) and access_token (your access token)
auth_resp.json().keys()
access_token = auth_resp.json()['access_token']
search_headers = {
'Authorization': 'Bearer {}'.format(access_token)
}
search_params = {
'q': 'General Election',
'result_type': 'recent',
'count': 200
}
search_url = '{}1.1/search/Full-archive/Sandbox.json'.format(base_url) ## DOES NOT WORK
# ... search_url = '{}1.1/search/full-archive/Sandbox.json'.format(base_url) ## DOES NOT WORK
# ... search_url = '{}1.1/search/Fullarchive/Sandbox.json'.format(base_url) ## DOES NOT WORK
# ... search_url = '{}1.1/search/FullArchive/Sandbox.json'.format(base_url) ## DOES NOT WORK
# ... search_url = '{}1.1/search/fullarchive/Sandbox.json'.format(base_url) ## DOES NOT WORK
#search_url = '{}1.1/search/tweets.json'.format(base_url) ## <- THIS WORKS !! - standard api
search_resp = requests.get(search_url, headers=search_headers, params=search_params)
search_resp.status_code
tweet_data = search_resp.json()
# ... tweet_data
for x in tweet_data['statuses']:
print(x['text'] + '\n')
使用标准搜索,没有问题。
对于我为完整档案搜索尝试的所有组合,search_resp.status_code 返回状态 404。
我的帐户拥有完整的存档/沙盒环境。我在创建环境时给出了开发环境标签:fullSearchSandbox。(如果这很重要)。
谢谢,如果有人可以在这里为我指明一个好的方向。
解决方案
将 search_params 和 search_url 更新为以下内容:
search_params = {'query': 'TwitterDev'}
search_url = '{}1.1/tweets/search/fullarchive/fullSearchSandbox.json'.format(base_url)
这解决了问题...查询现在返回status_code = 200
并填充了 tweets dict。
谢谢。
推荐阅读
- android - 如何修复 Android Studio 中的 INSTALL_FAILED_INVALID_APK 错误?
- java - Amazon EMR 集群停留在启动状态
- google-cloud-firestore - firestore 安全规则获取动态密钥的值?
- azure - Azure 应用服务显示 6 个数据输入指标实例并显示 5 个 CPU 时间指标实例
- c# - 识别在 DiagramControl 对象上选择的控件类型
- node.js - 为什么 Rollup 插件通过本地文件正确加载但不使用 NPM 库?
- json - 推送一个空文件而不是另一个到 github
- data-structures - 动态数组中可以有不同类型的原始数据类型吗?
- sql - 我想进行特定查询以对有关 2 个表的特定信息进行分组
- visual-studio - CEdit 适用于 ComCtrl32 版本 5.82 但不适用于 6.10