爬虫实战(十三)Post请求中Payload处理分析—以某素材分享网为例"/>
Python爬虫实战(十三)Post请求中Payload处理分析—以某素材分享网为例
前情回顾:知网Post请求实战
在上篇博客中,我们分享了一个基础的Post请求爬虫。实际上,Post请求一般传入的都是Form data式的数据,本次分享一个Post请求为request load形式的爬虫案例~
目录
- 一、爬虫分析
- 二、全部代码
网站地址:某素材网站
一、爬虫分析
抓取字段:标题、尺寸、大小、格式、使用量、收藏量
经过简单抓包可知,右侧红框中则包含我们所需要的信息
我们来分析它的POST请求,发现传入的数据形式是request payload
此时,如果直接传入数据字典,返回数据的是为空的,如下图所示(注意:headers中需要传入x-csrf-token字段及cookie字段)
原因在于:开发者为方便阅读,使用了JSON序列化,请求头中的【content-type: application/json】也印证了这一点
解决方法:将传入数据转为json即可,如下图所示
二、全部代码
import requests
import json
import pandas as pd
from jsonpath import jsonpath
url = ''params = {"item_id_list":["7005133042142465311"],"pre_item_type":4}def get_reponse(url,params):headers = {'authority': 'www.heycan','method': 'POST','path': '/api/materialInfo','scheme': 'https','content-type': 'application/json','origin': '','referer': '=7005133042142465311&from=personal_page&width=720&height=1280','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36','cookie': 'csrfToken=abalGrijwUtgehoA6ShdrPCD; s_v_web_id=verify_kuaurt73_zXaCAqEj_pEpR_4OQv_9D9Q_0YK9xKCKaiMB; MONITOR_WEB_ID=cd5c4073-b5b1-4fd7-8c46-c6252bbaa7dc','x-csrf-token': 'abalGrijwUtgehoA6ShdrPCD'}r = requests.post(url,headers=headers,data=json.dumps(params))json_data = json.loads(r.text)return json_datadef parse_inf(json_data):title = jsonpath(json_data,'$..item_list[*]mon_data.title')width = jsonpath(json_data,'$..item_list[*]mon_data.icon.width')height = jsonpath(json_data,'$..item_list[*]mon_data.icon.height')favorite_num = jsonpath(json_data,'$..item_list[*].statistics.favorite_num')usage_num = jsonpath(json_data,'$..item_list[*].statistics.usage_num')video_size_type = jsonpath(json_data,'$..item_list[*].video.video_size_type')inf_data = pd.DataFrame({'title':title,'width':width,'height':height,'favorite_num':favorite_num,'usage_num':usage_num,'video_size_type':video_size_type})return inf_datajson_data = get_reponse(url,params)
parse_inf(json_data)
更多推荐
Python爬虫实战(十三)Post请求中Payload处理分析—以某素材分享网为例
发布评论