2017-07-18 56 views
0

我使用python創建了一個可以獲取特定twitter用戶的所有追隨者的scraper。問題是,當我使用這個用戶ID列表來獲取他們與logstash的推文時,我有一個錯誤。 我用http://gettwitterid.com/來手動檢查這些ID是否正在工作,他們是,但是這個列表是真的很長,一個接一個地檢查它。驗證Twitter上的用戶標識是否能夠推送推文

是否有解決方案使用python將Ids分成兩個列表,一個包含有效Ids,另一個包含無效的列表,我使用有效列表作爲logstash的輸入? 第一個10行的CSV文件的是這樣的: 「ID」 「602169027」 「95104995」 「874339739557670912」 「2981270769」 「93054327」 「870723159011545088」 「3008493180」 「874804469082533888」 「756339889092829184」 「1077712806」

我嘗試這樣的代碼來獲得使用從CSV導入IDS鳴叫,但偏偏它提高144(未找到)

import tweepy 
import pandas as pd 

consumer_key = "" 
consumer_secret = "" 
access_token_key = "-" 
access_token_secret = "" 

auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token_key, access_token_secret) 

api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True) 

dfuids = pandas.read_csv('Uids.csv') 
for index, row in dfuids.iterrows(): 
    print row['id'] 
tweet = api.get_status(dfuids['id']) 

importing ids from csv

+0

是不是正好144你期望什麼,如果一個ID是無效的?由於您的文檔包含無效的ID?另外,爲什麼從循環外部和'dfuids'而不是'row'調用'get_status'? – patrick

+0

問題是,所有的ID都有144個(未找到),那些有144個ID的ID手動發現它們在問題中使用該網站有效。 不是所有的ID都是無效的,但是它們是無效的,因爲這個列表很長時間沒有手動做! 我也是初學Python的用戶,所以我不相信我的編程技巧! – lazurens

回答

0

試圖改變你的代碼如下:

for index, row in dfuids.iterrows(): 
    print row['id'] 
    tweet = api.get_status(row['id']) 

爲了逃避潛在的錯誤,你可以稍後再添加try/exceptloop

+0

我認爲問題是,當從csv讀取ID時,它的格式不同:原始ID:「602169027」,在運行python導入ID時在屏幕上打印時,它變成:602169027.0 – lazurens

+0

@lazurens可以粘貼摘錄csv文件?另外,你可以運行'dfuid.head()'和'print type(row ['id'])'(循環中的最後一個)嗎?這應該給我們一個想法 – patrick

+0

感謝您的幫助,並且幸運的是我在一些實驗後得到了解決方案 – lazurens

0

我得到了一些實驗結束後的溶液:

dfuids = pd.read_csv('Uids.csv') 
valid = [] 
notvalid = [] 
for index, row in dfuids.iterrows(): 
    print index 
    x = str(row.id) 
    #print x , type(x) 
    try: 
     tweet = api.user_timeline(row.id) 
     #print "Fine :",row.id 
     valid.append(x) 
     #print x, "added to valid" 
    except: 
     #print "NotOk :",row.id 
     notvalid.append(x) 
     #print x, "added to valid" 

的這部分代碼是我需要什麼,所以它循環對所有的ID,然後測試該用戶ID給我們從時間軸一些鳴叫,如果正確的話,它會作爲字符串附加到稱爲(有效)的列表中,否則如果我們因任何原因有異常,那麼它會附加到(無效)。

我們可以保存此列表到數據幀和導出CSV:

df = pd.DataFrame(valid) 
dfnotv = pd.DataFrame(notvalid) 
df.to_csv('valid.csv', index=False, encoding='utf-8') 
dfnotv.to_csv('notvalid.csv', index=False, encoding='utf-8') 
相關問題