分页数据的爬取操作
爬取肯德基的餐厅位置数据
url:http://www.kfc.com.cn/kfccda/storelist/index.aspx
分析:
-
在录入关键字的文本框中录入关键字按下搜索按钮,发起的是一个ajax请求
- 当前页面刷新出来的位置信息一定是通过ajax请求 请求到的数据
-
基于抓包工具定位到该ajax请求的数据包,从该数据包中捕获到:
-
请求的url
-
请求的方式
-
请求携带的参数
-
看到响应数据
-
-
爬取的第一页的数据
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' data = { 'cname': '', 'pid': '', 'keyword': '北京', 'pageIndex': '1', 'pageSize': '10' } # data 参数是post方法中处理参数动态化的参数 response = requests.post(url=url, data=data, headers=headers) page_text = response.json() for dic in page_text['Table1']: title = dic['storeName'] addr = dic['addressDetail'] print(title, addr)
结果如下:
-
爬取多页
爬取多页直接用 for 循环,一共10页,循环10次
for page in range(1, 11): url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword' data = { 'cname': '', 'pid': '', 'keyword': '北京', 'pageIndex': str(page), 'pageSize': '10' } # data 参数是post方法中处理参数动态化的参数 response = requests.post(url=url, data=data, headers=headers) page_text = response.json() for dic in page_text['Table1']: title = dic['storeName'] addr = dic['addressDetail'] print(title, addr)