我正在为项目开发 Python 程序,我需要一些帮助。我的程序的目标是从 CSV 文件获取输入,其中包含医院名称列表,然后使用每个医院的名称通过 Google 的 JSON 自定义搜索 API 执行搜索。
我需要从JSON搜索中得到的具体信息如下:
我希望程序解析搜索的前 5 个结果,并提取与每家医院相关的个人姓名。我正在寻找的职位的优先级如下:
主任医师 护士长 医生 护士 如果找到类似标题的多个名称,我希望程序存储第一个名称。 如果没有找到名字我希望它返回“ERROR”
程序提取此信息后,我想创建一个与原始文件相对应的新 CSV 文件。新文件应包含额外的列以容纳个人的名字和姓氏及其职位。
这是新 CSV 文件所需的结构:
原始行 名字 姓氏 职务 我一直在试图弄清楚如何开始这项任务,但我陷入了困境。对于实现这一目标的最佳方法有什么建议吗?任何帮助将不胜感激!
当然,我可以帮助您开始执行这项任务。以下是实现计划目标的分步方法:
第一步:导入必要的库 首先导入所需的库,例如用于处理 CSV 文件的 csv、用于发出 API 请求的 requests 以及用于解析 JSON 响应的 json。
import csv
导入请求 导入 json
第 2 步:定义从 Google Custom Search API 获取数据的函数 创建一个函数,将医院名称作为输入,并向 Google 自定义搜索 API 发出请求以搜索医院名称。 API 将返回带有搜索结果的 JSON 响应。
def get_google_search_results(hospital_name):
api_key = "YOUR_GOOGLE_API_KEY"
cx = "YOUR_CUSTOM_SEARCH_ENGINE_ID"
url = f"https://www.googleapis.com/customsearch/v1?q={hospital_name}&key={api_key}&cx={cx}"
response = requests.get(url)
if response.status_code == 200:
return json.loads(response.text)
else:
return None
确保将“YOUR_GOOGLE_API_KEY”和“YOUR_CUSTOM_SEARCH_ENGINE_ID”替换为您的实际 Google API 密钥和自定义搜索引擎 ID。
第 3 步:从 JSON 响应中提取个人信息 根据 API 的 JSON 响应,解析前五个结果并根据您的优先级提取个人姓名。您可以定义这样的函数:
def extract_individual_info(json_response):
if 'items' in json_response:
items = json_response['items']
priority_titles = ['Head Doctor', 'Head Nurse', 'Doctor', 'Nurse']
for item in items:
title = item['title']
for priority_title in priority_titles:
if priority_title in title:
name = title.split('-')[0].strip()
return name, priority_title
return None, None
第 4 步:处理 CSV 文件并创建一个新文件 现在,读取包含医院名称的输入 CSV 文件,处理每一行,使用 Google 自定义搜索 API 获取个人信息,并创建一个包含其他列的新 CSV 文件。
def process_csv(input_file, output_file):
with open(input_file, 'r') as csv_file:
csv_reader = csv.reader(csv_file)
header = next(csv_reader)
header.extend(['First Name', 'Last Name', 'Job Title'])
with open(output_file, 'w', newline='') as output_csv_file:
csv_writer = csv.writer(output_csv_file)
csv_writer.writerow(header)
for row in csv_reader:
hospital_name = row[0]
json_response = get_google_search_results(hospital_name)
first_name, job_title = extract_individual_info(json_response)
if first_name and job_title:
last_name = ''
if ' ' in first_name:
first_name, last_name = first_name.split(' ', 1)
row.extend([first_name, last_name, job_title])
else:
row.extend(['ERROR', 'ERROR', 'ERROR'])
csv_writer.writerow(row)
第五步:运行程序 现在,只需使用输入和输出文件路径调用 process_csv 函数即可:
if __name__ == "__main__":
input_csv_file = "input.csv"
output_csv_file = "output.csv"
process_csv(input_csv_file, output_csv_file)
确保将 input.csv 文件放在与脚本相同的目录中,脚本将生成包含所需信息的 output.csv 文件。
请记住将占位符“YOUR_GOOGLE_API_KEY”和“YOUR_CUSTOM_SEARCH_ENGINE_ID”替换为您的实际 Google API 密钥和自定义搜索引擎 ID。
请记住,Google 自定义搜索 API 可能有使用限制,因此在为大量医院运行该程序时请考虑这一点。另外,请确保遵守 Google 的 API 使用政策和服务条款。