爬取肯德基餐厅信息查询网站肯德基餐厅信息查询 (kfc.com.cn),发送请求的类型依然为阿贾克斯请求
对于问号之后的参数,如果是写死的参数,那么就要将其删去;如果是动态的参数,比如本题使用‘keyword’代替参数,则不需要删去。
结果代码如下:
import requests
import json
if __name__ == "__main__":
#UA伪装
headers={
'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'
}
#url从标头中的’请求url‘中获得
url='http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
#参数构建
param={
'cname':'',
'pid':'',
'keyword':'南京',
'pageIndex': '1',
'pageSize': '10'
}
#第一个参数是url,第二个参数是请求携带的数据,是url中携带的参数
response=requests.get(url=url,params=param,headers=headers)
#json方法返回的是一个obj对象,如果确认响应类型是json类型的,才可以使用json(),可以从响应标头Content-Type获取
list_data=response.json()
print(list_data)
获取结果如下:
{'Table': [{'rowcount': 286}], 'Table1': [{'rownum': 1, 'storeName': '张家港塘桥', 'addressDetail': '张家港塘桥镇南京路与西环路交汇处大润发卖场1层', 'pro': '24小时,Wi-Fi,店内参观,礼品卡', 'provinceName': '江苏省', 'cityName': '苏州市'}, {'rownum': 2, 'storeName': '苏站精选', 'addressDetail': '苏站路27号苏州站2F层候车室2A检票口(高铁动车南京方向)', 'pro': '精选店,手机点餐', 'provinceName': '江苏省', 'cityName': '苏州市'}, {'rownum': 3, 'storeName': '南京路', 'addressDetail': '南京路99号一层肯德基', 'pro': 'Wi-Fi,点唱机,礼品卡', 'provinceName': '山东省', 'cityName': '青岛市'}, {'rownum': 4, 'storeName': '南京西路', 'addressDetail': '南京西路277号', 'pro': '点唱机,店内参观,礼品卡', 'provinceName': '江西省', 'cityName': '南昌市'}, {'rownum': 5, 'storeName': '海光寺', 'addressDetail': '南京路与南门外大街交口', 'pro': 'Wi-Fi,点唱机,礼品卡', 'provinceName': '天津市', 'cityName': '天津市'}, {'rownum': 6, 'storeName': '乐宾', 'addressDetail': '南京路滨江道口乐宾百货一层', 'pro': 'Wi-Fi,礼品卡', 'provinceName': '天津市', 'cityName': '天津市'}, {'rownum': 7, 'storeName': '南五', 'addressDetail': '南京南街78号南五大润发一楼', 'pro': '24小时,Wi-Fi,礼品卡', 'provinceName': '辽宁省', 'cityName': '沈阳市'}, {'rownum': 8, 'storeName': '南京肯德基有限公司徐州华联', 'addressDetail': '淮海东路55号华联商厦一楼肯德基0516-83710049/充200元送88券包', 'pro': '24小时,Wi-Fi,点唱机,店内参观,礼品卡', 'provinceName': '江苏省', 'cityName': '徐州市'}, {'rownum': 9, 'storeName': '南京商厦', 'addressDetail': '龙蟠路2号', 'pro': '24小时,Wi-Fi,点唱机,店内参观,礼品卡', 'provinceName': '江苏省', 'cityName': '南京市'}, {'rownum': 10, 'storeName': '南京肯德基有限公司大福源', 'addressDetail': '泉山区煤建路8号', 'pro': 'Wi-Fi,点唱机,店内参观,礼品卡', 'provinceName': '江苏省', 'cityName': '徐州市'}]}