今日说法爬虫实战(初版)
Excel数据 :百度网盘分享提取码:n3ue
针对《今日说法》央视视频进行爬取,网页地址:https://tv.cctv.com/lm/jrsf/
网页分析
首先通过分析发现html
文件中中没数据,通过Google Chrome分析发现数据源自下图

并且可以通过进一步测试分析,n代表爬取信息数目(n最大值100,即一次请求最多获取100条信息),p为页数,本爬虫通过修改p值完成所有数据爬取。
数据爬取
数据爬取通过python-request模块实现
经过分析同过request模块发送get请求,获取数据并保存本地
1 2 3 4 5 6 7 8
| def get_data(page): url = 'https://api.cntv.cn/NewVideo/getVideoListByColumn?id=TOPC145146466500891' \ '4&n=1000&sort=desc&p={pageNo}&mode=0&serviceId=tvcctv&cb=Callback'.format(pageNo=page) headers = { 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ' '(KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36' } response = requests.get(url, headers=headers)
|
通过循环,传入不同页码进行信息获取。
数据解析
爬取后获得的信息格式为:
Callback({"data":{"total":1000,"list":[datas]}});
通过简单的字符串分割可以得到一个键值为data
的字典的字符串。接下来通过python-json将字符串转换为字典通过data[data][list]
获取后续所需要的数据
数据保存
数据保存为Excel通过python-openpyxl模块实现‘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| def save_data(datas): wb = openpyxl.Workbook() wb.create_sheet(index=0,title='今日说法') dataNo = len(datas) info = len(datas[0]) sheet = wb.worksheets[0]
sheet.cell(1, 1).value = '标题' sheet.cell(1, 2).value = '简介' sheet.cell(1, 3).value = '时长' sheet.cell(1, 4).value = '封面地址' sheet.cell(1, 5).value = 'URL' sheet.cell(1, 6).value = '发布日期' sheet.cell(1, 7).value = 'focus_date' sheet.cell(1, 8).value = 'guid' sheet.cell(1, 9).value = 'id'
for i in range(dataNo): sheet.cell(i+2, 1).value = datas[i]['title'] sheet.cell(i+2, 2).value = datas[i]['brief'] sheet.cell(i+2, 3).value = datas[i]['length'] sheet.cell(i+2, 4).value = datas[i]['image'] sheet.cell(i+2, 5).value = datas[i]['url'] sheet.cell(i+2, 6).value = datas[i]['time'] sheet.cell(i+2, 7).value = datas[i]['focus_date'] sheet.cell(i+2, 8).value = datas[i]['guid'] sheet.cell(i+2, 9).value = datas[i]['id'] print('第',(i+1),'条信息保存完毕')
wb.save('今日说法.xlsx')
|