爬虫03_基于requests的分页数据的爬取

项目实战01—基于ajax post请求爬取肯德基餐厅数据信息:

  • 爬取肯德基的餐厅位置数据,练习网址
  • 处理ajax post请求:使用requests模块的.post(url, headers, data)方法,其中参数data.post()方法中转门处理参数动态化的重要参数
  • 分页的核心在于分析请求数据包中的pageIndex参数,先抓取一页,再通过循环抓取多页
  • 注意:一定要对ajax请求返回的数据包进行分析,找到真正的url,找到响应的数据,如果是json数据直接调用response.json()方法将返回的字符串形式的json数据保存成字典或列表类型
    爬虫03_基于requests的分页数据的爬取_第1张图片
    爬虫03_基于requests的分页数据的爬取_第2张图片
    爬虫03_基于requests的分页数据的爬取_第3张图片
  • 项目代码展示
import requests
import os

url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
headers = {
     
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}
for page_index in range(1,8):
    # 爬取单页数据
    data = {
     
        'cname': '',
        'pid': '',
        'keyword': '北京',
        'pageIndex': str(page_index),
        'pageSize': '10',
    }

    # 参数data是.post()方法中转门处理参数动态化的重要参数
    response = requests.post(url=url, headers=headers, data=data)
    page_text = response.json()

    for dic in page_text['Table1']:
        store_name = dic['storeName']
        address_detail = dic['addressDetail']
        print(store_name, address_detail)
    

项目实战02—基于ajax post请求爬取国药监网站前5页的所有相关注册公司的化妆品生产许可证详情页

  • 爬取国家药监网化妆品生产许可证页面前5页所有的相关注册公司的许可证详情页,练习链接
  • 相关代码
import requests

base_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList'
headers = {
     
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}

for page in range(1, 6):
    base_data = {
     
        'on': 'true',
        'page': page,
        'pageSize': '15',
        'productName': '',
        'conditionType': '1',
        'applyname': '',
        'applysn': '',
    }
    #先爬取第一页
    response = requests.post(url=base_url, headers=headers, data=base_data)
    base_page_text = response.json()
    for eps in base_page_text['list']:
        detail_data = {
     
            'id': eps['ID'] #通过抓包工具分析,详情页面的请求需要传入参数为相关企业的ID
        }
        detail_url = 'http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById'
        response = requests.post(url=detail_url, headers=headers, data=detail_data) #传入相关企业的ID
        detail_page_text = response.json()
        print(detail_page_text['epsName'], detail_page_text['businessLicenseNumber'],  detail_page_text['businessPerson'])

你可能感兴趣的:(爬虫,python,python,post,爬虫,requests,ajax,post请求)