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

m1m5dgzv  于 2023-07-31  发布在  Python
关注(0)|答案(1)|浏览(132)

我正在为项目编写一个Python程序,我需要一些帮助。我的程序的目标是从CSV文件中获取输入,该文件包含医院名称列表,然后使用每个医院的名称通过Google的JSON自定义搜索API执行搜索。
我从JSON搜索中需要的具体信息如下:
我希望程序能够解析搜索的前5个结果,并提取与每个医院相关的个人姓名。我想找的职位优先级如下:
Head Doctor Head Nurse Doctor Nurse如果发现多个类似头衔的名字,我希望程序存储第一个。如果没有找到名字,我希望它返回“错误”
一旦程序提取了这些信息,我想创建一个与原始CSV文件相对应的新CSV文件。新文件应包含额外的列,以容纳个人的名字和姓氏,以及他们的职位。
下面是我需要的新CSV文件的结构:
我一直在想如何开始这项任务,但我在一开始就卡住了。对于实现这一目标的最佳方法,有什么建议吗?任何帮助将不胜感激!

gupuwyp2

gupuwyp21#

当然,我可以帮助你开始这项任务。以下是实现计划目标的一步一步的方法:
步骤1:导入必要的库首先导入所需的库,例如用于处理CSV文件的csv,用于发出API请求的request,以及用于解析JSON响应的json。

import csv

字符串
import requests import json
第2步:定义从Google Custom Search API获取数据的函数创建一个函数,该函数将医院名称作为输入,并向Google Custom Search 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文件现在,读取包含医院名称的输入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)


第5步:运行程序现在,简单地调用process_csv函数,输入和输出文件路径:

if __name__ == "__main__":
input_csv_file = "input.csv"
output_csv_file = "output.csv"
process_csv(input_csv_file, output_csv_file)


请确保将输入.csv文件与脚本放在同一目录中,脚本将生成包含所需信息的输出.csv文件。
请记住将占位符'YOUR_GOOGLE_API_KEY'和'YOUR_CUSTOM_SEARCH_ENGINE_ID'替换为您的实际Google API密钥和自定义搜索引擎ID。
请记住,Google自定义搜索API可能有使用限制,因此在为大量医院运行该程序时请考虑这一点。此外,请确保遵守Google的API使用政策和服务条款。

相关问题