首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多个用户帐户上运行'botometer-python‘脚本并保存到CSV时出现问题

在多个用户帐户上运行'botometer-python‘脚本并保存到CSV时出现问题
EN

Stack Overflow用户
提问于 2021-01-02 01:50:47
回答 1查看 90关注 0票数 0

我刚接触python,主要使用R,但我尝试使用下面的代码通过Botometer V4 API运行大约90个twitter帐户/句柄(在下面的代码中保存为一个名为'1‘的单列csv文件)。API github说,你可以使用“check_accounts_in”运行一系列账户,而无需升级到付费BotometerLite。

然而,我被困在如何循环遍历电子表格中的所有帐户/句柄,然后将单个结果保存到新的csv中。非常感谢您的帮助或建议。

代码语言:javascript
复制
import botometer
import csv
import pandas as pd

rapidapi_key = "xxxxx"
twitter_app_auth = {
    'consumer_key': 'xxxxx',
    'consumer_secret': 'xxxxx',
    'access_token': 'xxxxx',
    'access_token_secret': 'xxxxx',
  }
bom = botometer.Botometer(wait_on_ratelimit=True,
                          rapidapi_key=rapidapi_key,
                          **twitter_app_auth)

#read in csv of account names with pandas
data = pd.read_csv("1.csv")

for screen_name, result in bom.check_accounts_in(data):

#add output to csv
    with open('output.csv', 'w') as csvfile:
        csvwriter = csv.writer(csvfile)
        csvwriter.writerow(['Account Name','Astroturf Score', 'Fake Follower Score']),
        csvwriter.writerow([
        result['user']['user_data']['screen_name'],
        result['display_scores']['universal']['astroturf'],
        result['display_scores']['universal']['fake_follower']
        ])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-02 03:07:27

我不确定API返回什么,但您需要遍历CSV数据并将每个项目发送到API。有了返回的结果,您可以追加CSV。您可以在没有pandas的情况下遍历csv,但它会将其保留下来,因为您已经在使用它了。

新增虚拟函数,演示部分返回数据保存到csv。

CSV i使用:

代码语言:javascript
复制
names
name1
name2
name3
name4
代码语言:javascript
复制
import pandas as pd
import csv

def sample(x):
    return x + " Some new Data"   

df = pd.read_csv("1.csv", header=0)

output = open('NewCSV.csv', 'w+')

for name in df['names'].values:
    api_data = sample(name)
    csvfile = csv.writer(output)
    csvfile.writerow([api_data])

output.close()

若要直接读取单列CSV,请不使用pandas。您可能需要根据您的CSV进行调整

代码语言:javascript
复制
with open('1.csv', 'r') as csv:
    content = csv.readlines()

for name in content[1:]: # skips the header row - remove [1:] if the file doesn have one
    api_data = sample(name.replace('\n', ""))

对你的API做一些假设。这可能会起作用:

这里假设API返回一个字典:

代码语言:javascript
复制
{"cap": 
    {
    "english": 0.8018818614025648,
    "universal": 0.5557322218336633
    }
代码语言:javascript
复制
import pandas as pd
import csv

df = pd.read_csv("1.csv", header=0)

output = open('NewCSV.csv', 'w+')
for name in df['names'].values:
    api_data = bom.check_accounts_in(name)
    csvfile = csv.writer(output)
    csvfile.writerow([api_data['cap']['english'],api_data['cap']['universal']])

output.close()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65532189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档