2017-08-01 13 views
0

を照会I持っhttps://www.karambelkar.info/2015/01/how-to-use-twitters-search-rest-api-most-effectively./ループは、RESTのAPI

問題に応じたツイートを引っ張る作業REST検索APIスクリプト:このコードは動作しますが、searchQuery1searchQuery2とのつぶやきを引っ張ります。 (例えば、Prostate Cancer + Colon Cancerのつぶやき)。私はこれを望んでいない。代わりに、私はsearchQuery1(つぶやきのみProstate Cancer)とつぶやきのすべてを取得し、そしてすべてのつぶやきをsearchQuery2から(つぶやきのみColon Cancer)から取得したいと思います。クエリは個別に実行する必要があります。

目標:検索クエリのX数(例えばsearchQuery1searchQuery2、など)

ありがとうオーバー順次ループ!

searchQuery1 = 'Prostate Cancer' 
searchQuery2 = 'Colon Cancer' 


maxTweets = 10000 
tweetsPerQry = 100 
fprefix = 'REST' 
sinceId = None 
max_id = -1L 


tweetCount = 0 
with open('/Users/eer/Desktop/' + fprefix + '.' + time.strftime('%Y-%m-%d_%H-%M-%S') + '.json', 'a+') as f: #open file 
    while tweetCount < maxTweets: 
     try: 

      if (max_id <= 0): 
       if (not sinceId): 
        for x,y in zip(searchQuery1,searchQuery2): 
         new_tweets = api.search(q=[searchQuery1, searchQuery2], count=tweetsPerQry) 
       else: 
        print "sinceID 1" 
        new_tweets = api.search(q=[searchQuery1, searchQuery2], count=tweetsPerQry, 
              since_id=sinceId) 

      else: 
       if (not sinceId): 
        print "not sinceID 2" 
        new_tweets = api.search(q=[searchQuery1, searchQuery2], count=tweetsPerQry, 
              max_id=str(max_id - 1)) 
       else: 
        print "sinceID 1" 
        new_tweets = api.search(q=[searchQuery1, searchQuery2], count=tweetsPerQry, 
              max_id=str(max_id - 1), 
              since_id=sinceId) 
      if not new_tweets: 
       print("No more tweets found") 
       break     

      for tweet in new_tweets: 
       f.write(jsonpickle.encode(tweet._json, unpicklable=False) + 
         '\n') 


      tweetCount += len(new_tweets) 
      max_id = new_tweets[-1].id 

     except tweepy.TweepError as e: 
      print("some error : " + str(e)) 
      break 

print ("Downloaded {0} tweets, Saved to {1}".format(tweetCount, fprefix)) 
+0

あなたはsearchQuery2を含まないsearchQuery1を含む最後の週のすべてのつぶやきを取得したいしたい、そして最後に、すべてのつぶやきを取得してくださいsearchQuery1を含まないsearchQuery2を含む週? – Jonas

答えて

0
searchQuery = ['Prostate Cancer', 'Colon Cancer'] 
i = 0 


maxTweets = 1000 
tweetsPerQry = 100 
fprefix = 'REST' 
language = ['en'] 

sinceId = None 
max_id = -1L 

tweetCount = 0 
print("Downloading max {0} tweets".format(maxTweets)) 
with open('/Users/eer/Desktop/' + fprefix + '.' + time.strftime('%Y-%m-%d_%H-%M-%S') + '.json', 'a+') as f: 
    while tweetCount < maxTweets: 
     try: 
      if (max_id <= 0): 
       if (not sinceId): 

        for search in searchQuery: 
         new_tweets = api.search(q=searchQuery[i], count=tweetsPerQry, languages=language) 

       else: 
        for search in searchQuery: 
         new_tweets = api.search(q=searchQuery[i], count=tweetsPerQry, 
              since_id=sinceId, languages=language) 

      else: 
        print "not sinceID 2" 
        for search in searchQuery: 
         new_tweets = api.search(q=searchQuery[i], count=tweetsPerQry, 
              max_id=str(max_id - 1),languages=language) 
       else: 

        for search in searchQuery: 
         new_tweets = api.search(q=searchQuery[i], count=tweetsPerQry, 
              max_id=str(max_id - 1), 
              since_id=sinceId, languages=language) 
      if not new_tweets: 
       print("No more tweets found; checking next query") 
       i = i + 1 

       try: 
        for search in searchQuery: 
         new_tweets = api.search(q=searchQuery[i], count=tweetsPerQry, languages=language) 
       except IndexError: 
        break 

      for tweet in new_tweets:   
       f.write(jsonpickle.encode(tweet._json, unpicklable=False) + 
         '\n') 

      tweetCount += len(new_tweets) 
      print("Downloaded {0} tweets".format(tweetCount)) 
      max_id = new_tweets[-1].id 

     except tweepy.TweepError as e: 
      print("some error : " + str(e)) 
      break 

print ("Downloaded {0} tweets, Saved to {1}".format(tweetCount, fprefix)) 
+0

'searchQuery = ['前立腺がん'、 '結腸がん']'、 'i = 0'、' searchQuery: '、' q = searchQuery [i] 'は関連する新しいコードです。 'if not new_tweets:'の下に 'i = i + 1'から始まる新しいコード行もいくつかあります。これは、最初のクエリである' 'Prostate ''のすべてのつぶやき(例えば' 'Colon Cancer')がん –

0

質問を'"Prostate Cancer" OR "Colon Cancer"'に変更し、結果を保存します。それから、後でどのように注文するかを注文します。あなたは擬似コードで次たいように聞こえる:

tweets_with_Prostate_Cancer = [] 
tweets_with_Colon_Cancer = [] 

for each tweet in the result set: 
    if tweet contains "Prostate Cancer" and does not contain "Colon Cancer": 
     tweets_with_Prostate_Cancer.Add(tweet) 
    if tweet contains "Colon Cancer" and does not contain "Prostate Cancer": 
     tweets_with_Color_Cancer.Add(tweet) 

final_results = Concatenate(tweets_with_Prostate_Cancer, tweets_with_Colon_Cancer)