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

安装
# 进度条
pip install tqdm
code:
import json
from urllib import request, parse
from tqdm import tqdm

class GetKFCAddress:
    # 请求头信息
    headers = {
        'Referer': 'http://www.kfc.com.cn/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': "ASP.NET_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 = city
        self.url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
        self.path = path
        self.page = page

    def 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 req

    def 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']:
                break
            else:
                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()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值