2017-08-02 137 views
0

我用Twitter API很难,我使用下面的代码来获取一些推文,但每次我得到不同数量的推文(它实际上取决于几个参数应用:朗,流行/最近,过滤器等。)如何使用sqlite和rowcount计算for循环中的记录

for tweet in tweepy.Cursor(api.search,q=str(keyword), 
     result_type='recent', lang="en").items(num_tweets): 

这里的目标是有许多的鸣叫(在这个例子中是10与50已经从Twitter的要求)数据库文本处理后,计算等。

我正在使用此代码,但我不确定是否包含2 if语句的最佳方法,我不知道在哪里把空名单..

num_tweets = 50 
    final = tweet.text 

    words = len(final.split()) # To delete short tweets 
    nline = keyword,final  # Values for db 

    if (words > 15): 
     cursor.execute('INSERT OR IGNORE INTO tweets (keyword, tweet) VALUES (?, ?)', (nline)) 
     conn.commit() 

     rows_affected=cursor.rowcount 
     # print (rows_affected) 

     if (rows_affected == 1): 
      stored = [] 
      exact = len(stored) 
      stored.append(final) 
      print ('Tweet Stored') 
      print (len(stored)) 


     else: 
      pass 

      if (exact < 10): 
       # print (exact) 
       continue 
      else: 
       break 

如果我的代码发现只有9鸣叫和stored列表永远达不到期望的结果是什么?我应该使用类似=<的东西吗?

我的尝试是在INSERT添加LIMIT 10到DB代码...并使用rowcount

+0

你需要理清任何语法错误,这样就可以运行代码并向我们提供实际的输出**和**所需的输出。 – quamrana

+0

@quamrana对不起,我更新了问题,实际上它工作正常(没有语法错误),但只有9条推文存储在数据库中。 – Blacksun

+0

您现在已将您的作业遗失为'exact',但我怀疑您没有积累计算您在所有迭代中总共存储的推文数量。 – quamrana

回答

0

我找到了解决办法:

num_tweets = 50 
keyword = "Aventador" 

stored = [] 
exact = len(stored) 

for tweet in tweepy.Cursor(api.search,q=str(keyword), result_type='recent', lang="en").items(num_tweets): 
    final = tweet.text 

    words = len(final.split()) 
    nline = keyword,final 
    all.append(final) 

    if (words > 15): 
     rows_affected=cursor.rowcount 
     cursor.execute('INSERT OR IGNORE INTO tweets (keyword, tweet) VALUES (?, ?)', (nline)) 
     conn.commit() 

     # print (rows_affected) 

     if (rows_affected == 1): 
      stored.append(final) 
      print ('Tweet Stored')   
     else: 
      pass 

    if (len(stored) < 10): 
     print ('Continue') 
     continue 
    else: 
     print ('Script Break!') 
     break 

print (' ') 
print ('Number of Tweets fetched:') 
print (len(all)) 

print (' ') 
print ('Stored Tweets:') 
print (len(stored)) 
+0

所以你最终做了什么与if语句和更多关于将'stored = []'放置在循环外部没有太大关系。 – quamrana

+0

@quamrana是的,这是我第一次使用很多变量。谢谢btw。 – Blacksun