千里之行,始于足下。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!!!")

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值