失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python爬虫 输入城市 获取对应KFC餐厅名字及地址 -- KFC店铺位置抓取

Python爬虫 输入城市 获取对应KFC餐厅名字及地址 -- KFC店铺位置抓取

时间:2019-05-03 23:51:54

相关推荐

Python爬虫 输入城市 获取对应KFC餐厅名字及地址  --  KFC店铺位置抓取

安装

# 进度条pip install tqdm

code:

import jsonfrom urllib import request, parsefrom tqdm import tqdmclass GetKFCAddress:# 请求头信息headers = {'Referer': '/kfccda/storelist/index.aspx','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36','Cookie': "_SessionId = pk43tx2lplhrzsdcnljl1gc5;Hm_lvt_1039f1218e57655b6677f30913227148 = 1585564393;Hm_lpvt_1039f1218e57655b6677f30913227148 = 1585564855;KLBRSID = a34b6eb1eda6f7a05724ede2e440cdc7 | 1585617345 | 1585617345",'X-Requested-With': 'XMLHttpRequest',}# 初始化数据def __init__(self,city,path,page=1):self.city = cityself.url = '/kfccda/ashx/GetStoreList.ashx?op=keyword'self.path = pathself.page = pagedef prepare_request(self,post_data):# 通过urlencode进行编码encode_post_data = parse.urlencode(post_data).encode('utf-8')res = request.Request(self.url, data=encode_post_data, headers=GetKFCAddress.headers)req = request.urlopen(res)return reqdef saveaddress(self,json_obj):# 对感兴趣的内容进行提取(依据json格式来提取)for film_dict in tqdm(json_obj['Table1']):title = film_dict['storeName']rate = film_dict["addressDetail"]with open(self.path, "a", encoding='utf-8') as fp:fp.write("storeName:{}餐厅, addressDetail:{}".format(title, rate) + '\n')def getaddress(self):while True:post_data = {'cname':'','pid':'','keyword':f'{self.city}','pageIndex': f'{self.page}',}# 获取请求对象req = self.prepare_request(post_data)# 判断请求数据,是否成功if not req.code == 200:return '获取失败!'text = req.read().decode('utf-8')json_obj = json.loads(text)print(json_obj['Table1'])# 到达最后一页,跳出循环if not json_obj['Table1']:breakelse:self.page += 1# 保存获取的数据信息self.saveaddress(json_obj)if __name__ == '__main__':# 数据保存路径path = 'KFC_Address.txt'# 获取数据的城市city = '深圳'get_kfc_address = GetKFCAddress(city,path)get_kfc_address.getaddress()

如果觉得《Python爬虫 输入城市 获取对应KFC餐厅名字及地址 -- KFC店铺位置抓取》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。