Python:使用 Google 的 JSON 自定义搜索 API 处理 CSV 数据并输出到新的 CSV 文件

问题描述 投票:0回答:1

我正在为项目开发 Python 程序,我需要一些帮助。我的程序的目标是从 CSV 文件获取输入,其中包含医院名称列表,然后使用每个医院的名称通过 Google 的 JSON 自定义搜索 API 执行搜索。

我需要从JSON搜索中得到的具体信息如下:

我希望程序解析搜索的前 5 个结果,并提取与每家医院相关的个人姓名。我正在寻找的职位的优先级如下:

主任医师 护士长 医生 护士 如果找到类似标题的多个名称,我希望程序存储第一个名称。 如果没有找到名字我希望它返回“ERROR”

程序提取此信息后,我想创建一个与原始文件相对应的新 CSV 文件。新文件应包含额外的列以容纳个人的名字和姓氏及其职位。

这是新 CSV 文件所需的结构:

原始行 名字 姓氏 职务 我一直在试图弄清楚如何开始这项任务,但我陷入了困境。对于实现这一目标的最佳方法有什么建议吗?任何帮助将不胜感激!

python json csv google-custom-search
1个回答
0
投票

当然,我可以帮助您开始执行这项任务。以下是实现计划目标的分步方法:

第一步:导入必要的库 首先导入所需的库,例如用于处理 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 使用政策和服务条款。

© www.soinside.com 2019 - 2024. All rights reserved.