import requests
import math
import json
def spider1():
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
location = input("请输入你要查询的位置:")
''' 需要表单提交的数据,
- keyword表示搜索的关键字(也就是地址)
- pageIndex表示页面索引,第几页
- pageSize表示页面数据数量,有几条数据
'''
data ={
'cname': '',
'pid': '',
'keyword': location,
'pageIndex': '1',
'pageSize': '10',
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
}
response = requests.post(url=url,data=data,headers=headers)
da = response.json()
num = da['Table'][0]['rowcount']
print("你搜索的:"+location+"一共有:"+str(num)+"个餐厅")
page = math.ceil(num/10)
print("一共有:"+str(page)+"页")
result = []
for i in range(0,page):
data["pageIndex"]=i+1
print("当前正在爬取第" + str(data["pageIndex"]) + "页")
response = requests.post(url=url, data=data,headers=headers)
result += response.json()['Table1']
print("爬取第"+str(data["pageIndex"])+"页面完毕")
print("写入数据...")
fp = open(location+".json","w+",encoding="utf-8")
json.dump(result,fp=fp,ensure_ascii=False)
print("写入完毕,爬虫结束!")
if __name__ == '__main__':
spider1()
- 这是一个作业,爬取肯德基餐厅的json文件并保存
- 先爬取第一页的页面,
- 然后可以获得一共有多少个数据,
- 然后再计算有多少页
- 计算多少页之后就可以写循环,爬取所有数据了。