[requests]3.3.4、作业(爬取肯定及的餐厅信息)

import requests
import math
import json
def spider1():
    url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
    location = input("请输入你要查询的位置:")
    ''' 需要表单提交的数据,
        - keyword表示搜索的关键字(也就是地址)
        - pageIndex表示页面索引,第几页
        - pageSize表示页面数据数量,有几条数据
    '''
    data ={
        'cname': '',
        'pid': '',
        'keyword': location,
        'pageIndex': '1',
        'pageSize': '10',
    }
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
    }
    ## 使用post请求,输入url表单需要的数据以及请求头。
    response = requests.post(url=url,data=data,headers=headers)
    ## 转换成json格式
    da = response.json()
    ## 所查询的一个有多少个餐厅
    num = da['Table'][0]['rowcount']
    print("你搜索的:"+location+"一共有:"+str(num)+"个餐厅")
    ## 向上取整,计算一共有多少页
    page = math.ceil(num/10)
    print("一共有:"+str(page)+"页")
    ## 新建一个集合,把所有json数据放进这个集合里面,然后写出
    result = []
    for i in range(0,page):
        ## 修改表单pageIndex(代表第几页)的数据,这个表示重新开始爬取数据,从第一页开始爬取
        data["pageIndex"]=i+1
        print("当前正在爬取第" + str(data["pageIndex"]) + "页")
        ## 发起post请求
        response = requests.post(url=url, data=data,headers=headers)
        ## 获取到数据,把数据放进result集合里面
        result += response.json()['Table1']
        print("爬取第"+str(data["pageIndex"])+"页面完毕")
    print("写入数据...")
    fp = open(location+".json","w+",encoding="utf-8")
    json.dump(result,fp=fp,ensure_ascii=False)
    print("写入完毕,爬虫结束!")

if __name__ == '__main__':
    spider1()

在这里插入图片描述

  • 这是一个作业,爬取肯德基餐厅的json文件并保存
  • 先爬取第一页的页面,
  • 然后可以获得一共有多少个数据,
  • 然后再计算有多少页
  • 计算多少页之后就可以写循环,爬取所有数据了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值