##第零步

安装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

##最后

本文章中所有内容仅供学习交流使用!

大一新生学习第三天,勿喷。如有错误,烦请指正,谢谢!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐