python爬虫学习day3—KFC肯德基餐厅信息查询
op=cname"here = input("输入地区:")if data:else:print("打印已完成")breakPS:网站的反爬机制并非一成不变,因此代码具有时效性,截至文章发出,代码仍然可用。PS:大一新生学习第三天,勿喷。
##第零步
安装requests库以及了解AJAX请求
##第一步
打开肯德基餐厅信息查询 (kfc.com.cn)随便输入一个地址后发现页面没有整体刷新,并且点击下一页页面也仍然是局部刷新,因此判断是AJAX请求。
##第二步
F12打开控制台,点击网络(network),选择XHR(实现网页得局部刷新)或者叫Fetch/XHR。
选择一个地址后,我们可以得到

点击后我们可以得到:其url为
https://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname
请求方式为:POST
响应标头Content-Type:text
表单数据为:
cname:安陆
pid:
pageIndex:1
pageSize:10
通过多次切换城市与点击下一页 不难看出 cnname为城市 pageIndex为第几页
##第三步
首先,由于网站有UA检测反爬,我们进行UA伪装
headers = {"User-Agent": "自己浏览器的标识"}
输入url:
https://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=cname
由于这是一个post请求,其中cnname为城市 pageIndex为第几页,因此我们还需要考虑将该城市所有页面内容都爬下来,因此可以选择设置一个较大的页数,cnnane让用户进行输入
here = input("输入地区:")
for i in range(1, 100):
params = {"cname": here, "pid": "", "keyword": "", "pageIndex": i, "pageSize": "10"}
response = requests.post(url, headers=headers, params=params)
由预览可以知道response.text是一个字符串形式的字典,并且有效内容存储在[Table1]下
因此我们需要将data转换成字典,然后我们进行判断,如果[Table1]下有值,则打印,如果没有值,则跳出循环。PS:持久化存储可见day2
data = eval(response.text)
data = data["Table1"]
if data:
print(data)
else:
print("打印已完成")
break
##最后
本文章中所有内容仅供学习交流使用!
大一新生学习第三天,勿喷。如有错误,烦请指正,谢谢!
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)