2016-08-10 61 views
7

Nihai hedef, konulara (örn. Docker) odaklanmak ve retc'leri EXCLUDE tutmak için tweepy api aramasını kullanmaktır. Retweetleri hariç diğer konulara da baktım ama tamamen uygulanabilirlerdi. Öğrendiklerimi aşağıdaki kodda birleştirmeye çalıştım ama "eğer olmasın" kod parçası yanlış yere inanıyorum. Herhangi bir yardım büyük beğeni topluyor.Tweepy - Retweet'leri İptal Et

if not tweet.retweeted: 

Ya için:

#!/usr/bin/python 
import tweepy 
import csv #Import csv 
import os 

# Consumer keys and access tokens, used for OAuth 
consumer_key = 'MINE' 
consumer_secret = 'MINE' 
access_token = 'MINE' 
access_token_secret = 'MINE' 

# OAuth process, using the keys and tokens 
auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 


api = tweepy.API(auth) 
# Open/Create a file to append data 
csvFile = open('docker1.csv', 'a') 
#Use csv Writer 
csvWriter = csv.writer(csvFile) 


ids = set() 
for tweet in tweepy.Cursor(api.search, 
        q="docker", 
        Since="2016-08-09", 
        #until="2014-02-15", 
        lang="en").items(5000000): 
if not tweet['retweeted'] and 'RT @' not in tweet['text']: 
    #Write a row to the csv file/ I use encode utf-8 
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8'), tweet.favorite_count, tweet.retweet_count, tweet.id, tweet.user.screen_name]) 
    #print "...%s tweets downloaded so far" % (len(tweet.id)) 
    ids.add(tweet.id) # add new id 
    print ("number of unique ids seen so far: {}",format(len(ids))) 
csvFile.close() 

Error Message

+0

Aldığınız bir hata var mı? ya da sadece kod optimizasyonu mı arıyorsunuz? – harshil9968

+0

@ harshi9968 Birden fazla hata alınıyor ... Hatalı Sözdizimi, 'Durum' nesnesinin özniteliği yok '--getitem--' ... Başka yayınları araştırmaktan, "tweet ['retweetled'] ve 'RT @' 'tweet değil [' text '] 'istediğimi, ama ne ben ihtiyacım var ne almak için kod tam olarak emin değilim – hansolo

+0

hataları bir ekran görüntüsü gönderebilir miyim? – harshil9968

cevap

7

Yani tweet bir nesne değil bir JSON veya dict, sen tweet['retweeted'] gibi erişmek olmamalı ve tweet['text']

yerine bu hattı kullanmak olduğunu kullanım durumunuz:

kabul edilen yanıt ek olarak
+0

bir hata mesajı ekledi çok yararlı. tekrar teşekkürler. Bunu iltifat etmek için hızlı bir soru ... Eğer ek parametrelere geçmek istediğimde if ifadesi mümkün olabilir mi? Örneğin, yalnızca tweet.favorite_count veya tweet.retweet_count öğesinin tweet'leri> 0 olduğu durumlarda getirmek istiyorsam, '(tweet.retweeted değil) ve ('RT @' tweet.text içinde değil) gibi bir şey yapabilir miyim?) ve (tweet.favorite_count> 0): ' – hansolo

+0

evet, eğer yardım ederse, lütfen cevabı ve yükseltmeyi suçlayın. – harshil9968

9

if (not tweet.retweeted) and ('RT @' not in tweet.text): 
, ben bile sonuçlarında görünmesini en retweets önleyecektir q="docker" den q="docker -filter:retweets"

Bu kadar yaptığınız isteği değiştirmek öneririm.

+0

Bu benim için çalıştı. Twitter dokümanları başına diğer standart operatörler için de aynısını yapabilirsiniz: https://developer.twitter.com/en/docs/tweets/rules-and-filtering/overview/standard-operators – user2467163