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

2021/4/19 1:25:11

本文主要是介绍千里之行,始于足下。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!!!")

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



这篇关于千里之行,始于足下。python 爬虫 requestes 模块(5)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程