Вставка JSON Twitter по полю в MongoDB с помощью Python - PullRequest
0 голосов
/ 04 июня 2018

Я работал над этим часами и мне нужна помощь.Это в основном работает.Я могу подключиться к Twitter, получить данные json и сохранить их в MongoDB, однако не все данные, которые я вижу в моей строке «print (tweet)», отображаются в MongoDB.В частности, я не видел поле screen_name (или имя или вопрос).Мне просто нужны эти поля: «id», «text», «create_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"))

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Вы можете использовать следующий способ:

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

Это должно работать.

0 голосов
/ 04 июня 2018

Поле «screen_name» является подмножеством части «user» метаданных твита.Убедитесь, что вы бурите достаточно далеко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...