import pandas as pd
import requests
import urllib
from urllib import parse
import hashlib
import json
抓取北京市的XX捞poi数据
##行政区域检索 https://api.map.baidu.com/place/v2/search?query={}®ion=北京&output=json&ak={} //GET请求
def get_url(name,region,you_ak,my_ak):
querystr=f"/place/v2/search?query={name}®ion={region}&output=json&ak={you_ak}"
# 对queryStr进行转码,safe内的保留字符不转换
encodedStr=urllib.parse.quote(querystr,safe="/:=&?#+!$,;'@()*[]")
rawStr = encodedStr + my_ak
# 计算sn
sn = (hashlib.md5(urllib.parse.quote_plus(rawStr).encode("utf8")).hexdigest())
#由于URL里面含有中文,所以需要用parse.quote进行处理,然后返回最终可调用的url
url = urllib.parse.quote("http://api.map.baidu.com" + querystr + "&sn=" + sn, safe="/:=&?#+!$,;'@()*[]")
print('URL:', url)
return url
# 搜索北京市的所有海底捞
res = requests.get(get_url(name="海底捞",region="北京",you_ak="QswuPajMR0s2uijYCg4UaBAe7ufZ6AOE",my_ak="ESWSasiQG5YFKamY0Ic31ULNpkEl2mVC"))
text = json.loads(res.text)
text
# 将json格式的结果转化为Dataframe
result = pd.DataFrame(text['results']).drop_duplicates('name')
result