编程语言
首页 > 编程语言> > 千里之行,始于足下。python 爬虫 requestes 模块(5)

千里之行,始于足下。python 爬虫 requestes 模块(5)

作者:互联网

肯德基餐厅地址查询

前面我们学习了破解百度翻译,知道了 AJAX 的工作原理和爬取,那么我们今天就来巩固我们的学习成果吧。

首先我们打开肯德基的官网,点击 “餐厅查询”
在这里插入图片描述
然后是没有地址的网页,然后我们输入地址
在这里插入图片描述

在这里插入图片描述
我们发现不论有没有搜索,网址都没有发生变化,这说明肯德基官网的地址查询是通过 AJAX 实现的,知道了这样一点我们就可以使用抓包工具进行分析了。

我们可以从抓包工具中找到请求的 url 和相对应的请求命令和数据类型。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们发现这是一个 json 串,我们还需要像上次破解百度翻译一样先把 json 串爬取下来,再在线解析吗?答案当然是否定的,我们可以在抓包工具的 response 中得到目前的 json,然后在线解析。
在这里插入图片描述
在这里插入图片描述
欧克,那么我就可以开始写爬取肯德基餐厅地址的代码了

import requests

if __name__ == "__main__":
    # 指定 URL
    url = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword"

    # UA 伪装
    header = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36"
        }
    
    # 数据
    kd = input("需要查询的地点:")
    data = {
        "cname": "",
        "pid": "", 
        "keyword": kd , # 要搜索的地址
        "pageIndex": "1" , # 要爬取的网页的页码
        "pageSize": "10" # 每一页的数量
        }

    # 发送请求
    for i in range(1, 3): # 爬取两页
        data["pageIndex"] = str(i)
        response = requests.post(url = url, data = data, headers = header).json()
        page = response["Table1"]

        # 存储
        for detail in page:
            with open("./肯德基地址.txt", "a", encoding = "utf-8") as fp:
                fp.write("storeName:" + detail["storeName"] + "\n" + "addressDetail:" + detail["addressDetail"] + "\n" + "\n")

    print("over!!!")

打开保存的文件如下
在这里插入图片描述
说明爬取成功

标签:__,千里之行,url,json,地址,始于足下,requestes,肯德基,data
来源: https://blog.csdn.net/ShiJieDeYinYu/article/details/115840178