import requests
import json
import pandas as pd
import sys
def request_hospital_data(query, region):
ak="" # 换成自己的 AK,需要申请
ct = (str(region))
keywords=(str(query))
url = ["http://api.map.baidu.com/place/v2/search?query="+keywords+"&page_size=20&scope=1®ion=" + region + "&output=json&ak=" + ak ]
params = {'page_num':0} # 请求参数,页码
items = [] # 存放所有的记录,每一条记录是一个元素
# print(str(url))
for url1 in url:
#print(url1)
request = requests.get(url1,params=params)
print(request.text)# 请求数据
total = json.loads(request.text)['total'] # 数据的总条数
# print('总数: '+str(total))
total_page_num = (total+19) // 20 # 每个页面大小是20,计算总页码
for i in range(total_page_num):
params['page_num'] = i
request = requests.get(url1,params=params)
# print(str(json.loads(request.text)['results']))
for item in json.loads(request.text)['results']:
if not item:
continue
else:
if "telephone" in item and "name" in item:
name = item['name']
telephone = str(item.get('telephone', '').split(",")).strip('[').strip(']')+' '
# province = item['province']
# city = item['city']
# area = item['area']
address = item['address']
#print(name,telephone,province,city,area,address)
new_item = (name,telephone,address)
#print(new_item)
items.append(new_item)
#使用pandas的DataFrame对象保存二维数组
df = pd.DataFrame(items, columns=['name','telephone','address'])
print(df)
df.drop_duplicates(inplace=True)
df.to_csv(str(region)+'-'+str(query)+'.csv', index=False,encoding='',mode='a')
request_hospital_data(sys.argv[1],sys.argv[2])
以上就是代码 注解都写的很清楚。直接python运行 python3 地点 产品类型即可导出csv到当前目录 注:ak是百度的开发辨识码 可以免费申请 目的应当是标识使用人员的信息 申请填入即可
|