使用CSV文件中的名称列表遍历API

时间:2018-07-13 22:27:15

标签: python-3.x api

我已经更新了我的代码。这似乎可以获取所有行,但这是执行此操作的最有效方法,还是有更好的迭代方法?)

我正在尝试使用CSV文件中的名称列表遍历API。现在,我不得不将名称硬编码到API中,以获取每个“战斗机”所需的数据。我想自动执行此过程,所以我可以运行此代码,它将搜索csv文件中列出的每个名称,并使用每个名称填充API,收集代码,然后将其存储在列表中。这是我到目前为止的代码。

from bs4 import BeautifulSoup
import pandas as pd
import requests, re
from urllib.parse import urljoin
import csv

workbook = open('MMA Fighter Names.csv')
reader = csv.reader(workbook)
api = 'https://mma.now.sh/?fighter={}'

for row in reader:
    r = requests.get(api.format(row))
    data = r.json()

    name = data['name']
    nickname = data['nickname']
    fullName = data['fullname']
    record = data['record']
    association = data['association']
    age = data['age']
    birthday = data['birthday']
    hometown = data['hometown']
    nationality = data['nationality']
    location = data['location']
    height = data['height']
    height_cm = data['height_cm']
    weight = data['weight']
    weight_kg = data['weight_kg']
    weight_class = data['weight_class']
    college = data['college']
    degree = data['degree']
    summary = data['summary']

    print(name)

“工作簿”是我的csv文件,“ api”是我的api链接。您可以看到api的最后一部分,我已经硬编码了一个名称“ fighter = Daniel Cormier”。我想将此部分更改为列表{},然后用我的csv文件中的名称填充它,同时它收集每架战斗机的所有数据。

从那里我可以编写代码来存储数据。

感谢您的帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

这对于一个函数或class来说会很好用,为了简单起见,我使用一个函数。

def gatherdata(fighter_name):

    api = 'https://mma.now.sh/?fighter={0}'.format(fighter_name)

    r = requests.get(api)
    data = r.json()

    name = data['name']
    nickname = data['nickname']
    fullName = data['fullname']
    record = data['record']
    association = data['association']
    age = data['age']
    birthday = data['birthday']
    hometown = data['hometown']
    nationality = data['nationality']
    location = data['location']
    height = data['height']
    height_cm = data['height_cm']
    weight = data['weight']
    weight_kg = data['weight_kg']
    weight_class = data['weight_class']
    college = data['college']
    degree = data['degree']
    summary = data['summary']

    print(name)


#Get all Fighters from the csv into this list
fighters = []

for fighter_name in fighters:
    gatherdata(fighter_name)