使用 python 将 Twitter 的 json by field 插入 MongoDB 中



我已经为此工作了几个小时,需要一些帮助。 这大多有效。我能够连接到Twitter,提取json数据并将其存储在MongoDB中,但是并非我在"print(tweet("行中看到的所有数据都显示在MongoDB中。 具体来说,我没有看到screen_name(或名称或事项(字段。我真的只需要这些字段:"id","text","created_at","screen_name","retweet_count","favourites_count","lang",除了名称之外,我得到了它们。 我不确定为什么它没有与所有其他字段一起插入到数据库中。 任何帮助将不胜感激!

from twython import Twython
from pymongo import MongoClient
ConsumerKey = "XXXXX"
ConsumerSecret = "XXXXX"
AccessToken = "XXXXX-XXXXX"
AccessTokenSecret = "XXXXX"
twitter = Twython(ConsumerKey,
	ConsumerSecret,
	AccessToken,
	AccessTokenSecret)
result = twitter.search(q="drexel", count='100')
result1 = result['statuses']
for tweet in result1:
print(tweet) #prints tweets so I know I got data
client = MongoClient('mongodb://localhost:27017/')
db = client.twitterdb
tweet_collection = db.twitter_search
#Fields I need ["id", "text", "created_at", "screen_name", "retweet_count", "favourites_count", "lang"]
for tweet in result1:
	try:
		tweet_collection.insert(tweet)
	except:
		pass
print("The number of tweets in English: ")
print(tweet_collection.count(lang="en"))

您可以使用以下方式:

def get_document(post):
return {
'id': post['id_str'], 
'text': post['text'], 
'created_at': post['created_at'], 
'retweet_count' : post['retweet_count'], 
'favourites_count': post['user']['favourites_count'], 
'lang': post['lang'],
'screen_name': post['user']['screen_name'] 
}
for tweet in result1:
try:
tweet_collection.insert(
get_document(tweet)
)
except:
pass

它应该有效。

"screen_name"字段是推文元数据的"用户"部分的子集。确保向下钻取得足够远。

相关内容

最新更新