##第零步
安装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
##最后
本文章中所有内容仅供学习交流使用!
大一新生学习第三天,勿喷。如有错误,烦请指正,谢谢!