(我已经更新了我的代码。这似乎可以获取所有行,但这是执行此操作的最有效方法,还是有更好的迭代方法?)
我正在尝试使用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文件中的名称填充它,同时它收集每架战斗机的所有数据。
从那里我可以编写代码来存储数据。
感谢您的帮助。
谢谢。
答案 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)