项目实战01—基于ajax post请求爬取肯德基餐厅数据信息:
- 爬取肯德基的餐厅位置数据,练习网址
- 处理
ajax post
请求:使用requests模块的.post(url, headers, data)
方法,其中参数data
是.post()
方法中转门处理参数动态化的重要参数
- 分页的核心在于分析请求数据包中的
pageIndex
参数,先抓取一页,再通过循环抓取多页
- 注意:一定要对ajax请求返回的数据包进行分析,找到真正的
url
,找到响应的数据,如果是json
数据直接调用response.json()
方法将返回的字符串形式的json
数据保存成字典或列表类型
- 项目代码展示
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',
}
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']
}
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)
detail_page_text = response.json()
print(detail_page_text['epsName'], detail_page_text['businessLicenseNumber'], detail_page_text['businessPerson'])