首页 > 编程语言 >python爬虫实例: 对指定城市kfc餐厅信息的爬取

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

时间:2022-08-18 22:01:14浏览次数:87  
标签:__ 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,餐厅
From: https://www.cnblogs.com/yhsdad/p/16600268.html

相关文章

  • python链接
    importredis#链接redishost,port,db#建立链接con=redis.StrictRedis(host='127.0.0.1',port=6379,db=4,#默认使用的是0号decode_responses=True)#......
  • 学习python-Day42
    今日学习内容Navicat可视化软件可以充当很多数据库软件的客户端,最主要的用于MySQL下载>>>正版收费>>>找破解版>>>百度查询下载完成后>>>连接>>>MySQL>>>创建连接......
  • MySQL可视化软件(Navicat)部署与使用、python操作MySQL数据库连接(pymysql)
    目录一、Navicat可视化软件1.什么是可视化软件?2.什么是Navicat?二、使用Navicat操作MySQL1.Navicat连接本地2.连接成功后进行后续的操作3.可以直观的看到表与表之间的关系三......
  • python | 算法大神左神(左程云)算法课程 第五节
    TodayNew->python|算法大神左神(左程云)算法课程第五节(第几节我已经搞不清了,随便吧。。)针对b站视频左神算法与数据结构,自己练习对应的python代码相关链接:1️⃣b站视......
  • python获取对象属性的几种方法
    当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?1.使用type()首先,我们来判断对象类型,使用type()函数:基本类型都可以用type()判断:>>>type(123)<......
  • windows下 python virtualenv 虚拟环境安装
    1.  虚拟环境virtualenvironment借助虚拟化技术,把机器中一部分内容独立出来。这部分独立的内容一般被称为“容器”。在这个容器中,我们可以安装需要的依赖包,各个......
  • Python|使用Python实现图像的重采样
    基础知识图像重采样就是从高分辨率遥感影像中提取出低分辨率影像,或者从低分辨率影像中提取高分辨率影像的过程。常用的方法有最邻近内插法、双线性内插法、三次卷积法等。......
  • MySQL多表查询与python操作MySQL
    一、navicateNavicate是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQLServer、MariaDB 和 MongoDB 等不同类型的数据库......
  • python 中实现DNA一致性序列计算
     001、root@PC1:/home/test#lsa.fastatest.pyroot@PC1:/home/test#cata.fasta##测试数据>Rosalind_1ATCCAGCT>Rosalind_2GGGCAACT>Rosalin......
  • Python list methods All In One
    PythonlistmethodsAllInOnePython3#!/usr/bin/envpython3#coding=utf-8__author__='xgqfrms'__editor__='vscode'__version__='1.0.1'__copyrigh......