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

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

我正在为项目编写一个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。

  1. import csv

字符串
import requests import json
第2步:定义从Google Custom Search API获取数据的函数创建一个函数,该函数将医院名称作为输入,并向Google Custom Search API发出请求以搜索医院名称。API将返回一个JSON响应和搜索结果。

  1. def get_google_search_results(hospital_name):
  2. api_key = "YOUR_GOOGLE_API_KEY"
  3. cx = "YOUR_CUSTOM_SEARCH_ENGINE_ID"
  4. url = f"https://www.googleapis.com/customsearch/v1?q={hospital_name}&key={api_key}&cx={cx}"
  5. response = requests.get(url)
  6. if response.status_code == 200:
  7. return json.loads(response.text)
  8. else:
  9. return None


请确保将“YOUR_GOOGLE_API_KEY”和“YOUR_CUSTOM_SEARCH_ENGINE_ID”替换为您实际的Google API密钥和自定义搜索引擎ID。
第3步:从JSON响应中提取个人信息给定API的JSON响应,解析前五个结果,并根据优先级提取个人的姓名。你可以这样定义一个函数:

  1. def extract_individual_info(json_response):
  2. if 'items' in json_response:
  3. items = json_response['items']
  4. priority_titles = ['Head Doctor', 'Head Nurse', 'Doctor', 'Nurse']
  5. for item in items:
  6. title = item['title']
  7. for priority_title in priority_titles:
  8. if priority_title in title:
  9. name = title.split('-')[0].strip()
  10. return name, priority_title
  11. return None, None


步骤4:处理CSV文件并创建一个新的CSV文件现在,读取包含医院名称的输入CSV文件,处理每一行,使用Google自定义搜索API获取个人信息,并创建一个包含其他列的新CSV文件。

  1. def process_csv(input_file, output_file):
  2. with open(input_file, 'r') as csv_file:
  3. csv_reader = csv.reader(csv_file)
  4. header = next(csv_reader)
  5. header.extend(['First Name', 'Last Name', 'Job Title'])
  6. with open(output_file, 'w', newline='') as output_csv_file:
  7. csv_writer = csv.writer(output_csv_file)
  8. csv_writer.writerow(header)
  9. for row in csv_reader:
  10. hospital_name = row[0]
  11. json_response = get_google_search_results(hospital_name)
  12. first_name, job_title = extract_individual_info(json_response)
  13. if first_name and job_title:
  14. last_name = ''
  15. if ' ' in first_name:
  16. first_name, last_name = first_name.split(' ', 1)
  17. row.extend([first_name, last_name, job_title])
  18. else:
  19. row.extend(['ERROR', 'ERROR', 'ERROR'])
  20. csv_writer.writerow(row)


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

  1. if __name__ == "__main__":
  2. input_csv_file = "input.csv"
  3. output_csv_file = "output.csv"
  4. 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使用政策和服务条款。

展开查看全部

相关问题