前言
****对于我这种不喜欢吃汉堡薯条的人来讲,确实不知道肯德基居然可以随处可见!那么它真的有这么赚钱吗?所以今天突发奇想,我用Python来查一查它在我们市里究竟有多少家门店!话说前几天在群里就有看到这个外包信息!这种外包居然都能赚三百!
编辑
相关模块
requests
csv
另外就是自带的模块了!
由于此次案例过于简单!这里就不过多的去给大家介绍详细流程了,应该都会!所以直接上代码看结果吧!
完整源码
"""
import requests # 第三方的模块 数据请求
from pprint import pprint # 内置模块 不需要安装 格式化输出
import csv # 内置模块 不需要安装 保存
with open('肯德基.csv', mode='a', encoding='utf-8', newline='') as f:
f.write('省份, 城市, 商圈, 详细位置, 服务\n')
# 构建一个发送请求的函数-->解决代码冗余(啰嗦)
def get_response(data):
"""
def 定义函数的关键字
:param data: 参数
:return: 函数的返回值
"""
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
headers = {
'Referer': 'http://www.kfc.com.cn/kfccda/storelist/index.aspx',
# 浏览器的身份标识
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
response = requests.post(url=url, headers=headers, data=data)
return response
# 构建翻页逻辑函数
def get_page(keyword):
data = {
'cname': '',
'pid': '',
'keyword': keyword,
'pageIndex': '1',
'pageSize': '10'
}
json_data = get_response(data=data).json()
# pprint(json_data)
rowcount = json_data['Table'][0]['rowcount']
if rowcount % 10 > 0:
page_num = rowcount // 10 + 1
else:
page_num = rowcount // 10
return page_num
# get_page('武汉')
# 解析数据
def get_info(keyword):
page_num = get_page(keyword)
for page in range(1, page_num + 1):
data = {
'cname': '',
'pid': '',
'keyword': keyword,
'pageIndex': str(page),
'pageSize': '10'
}
json_table = get_response(data=data).json()
json_lists = json_table['Table1']
for json_list in json_lists:
# 省份
provinceName = json_list['provinceName']
# 城市
cityName = json_list['cityName']
# 商圈
storeName = json_list['storeName']
# 具体位置
addressDetail = json_list['addressDetail']
# 服务
pro = json_list['pro']
print(provinceName, cityName, storeName, addressDetail, pro)
# with 对上-->打开文本 对下--> 关闭文件
# as 取小名
with open('肯德基.csv', mode='a', encoding='utf-8', newline='') as f:
csv_write = csv.writer(f)
csv_write.writerow([provinceName, cityName, storeName, addressDetail, pro])
# get_info('北京')
# 测试
if __name__ == '__main__':
cities = ['长沙', '武汉', '北京', '天津', '上海']
for city in cities:
get_info(city)
效果展示
编辑
属实没想到啊,在长沙能有这么多的分店能比的估计也只有茶颜悦色了!话说如果有小伙伴来长沙玩记得喝一杯哦!幽兰拿铁还是相当不错!
完整代码都贴了,如有报错可关注公众号:python源码 免费解答哦 所以说会爬虫饿不死自己这句话是真的!