ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python爬虫实例: 对指定城市kfc餐厅信息的爬取

2022-08-18 22:00:56  阅读:200  来源: 互联网

标签:__ python 爬虫 爬取 url json kfc 餐厅


python爬虫实例: 对指定城市kfc餐厅信息的爬取

要求:爬取指定 kfc 餐厅数据

kfc餐厅查询的url:http://www.kfc.com.cn/kfccda/storelist/index.aspx




分析: 由于餐厅信息是Ajax请求的动态数据,所以从原url爬取的数据是不会有想要城市的kfc餐厅的信息

解决方法:找到真正发送请求的对象->f12查找



f12查找到真正发送请求的url

这边我们可以分析真正要发送请求的url, 同时也可获得一些比较有用的信息(例如发送请求的方式为post。)



并找到发送请求的表单数据。

至此准备工作已经完成,可以爬取我们想要的信息。

代码如下:

import requests
import json
# 用json的方式保存我们爬取到的信息

if __name__ == "__main__":
    # weblistnum 用来获取实际有多少页(实际页码数)
    def weblistnum():
        page_text = response.text
        webdata = json.loads(page_text)
        nump = webdata['Table'][0]['rowcount']
        return nump//10 + (nump % 10 > 0)
    limitnum = i = 1
    position = input()
    while True:
        url = "http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword"

        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/97.0.4692.99 Safari/537.36 Edg/97.0.1072.69 "
        }

        data = {
            "cname": "",
            "pid": "",
            "keyword": position,
            "pageIndex": i,
            "pageSize": 10
        }

        response = requests.post(url=url, data=data, headers=headers)

        page = response.json()

        if 1 == i:
            limitnum = weblistnum()

        fp = open("kfc_restaurant_position.json", "a", encoding='utf-8')
        json.dump(page, fp=fp, ensure_ascii=False)
        fp.close()
        if limitnum == i:
            break
        i += 1
    print("got it!!")

爬取到的结果:(仅作部分展示)

标签:__,python,爬虫,爬取,url,json,kfc,餐厅
来源: https://www.cnblogs.com/yhsdad/p/16600268.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有