data = { 'extension': [ { 'name': "osVersion", 'value': "6.0", }, { 'name': "deviceType", 'value': "android", }, ], 'filter': { 'filterItems': [] }, 'head': { 'auth': "", 'cid': "09031137218199825303", 'ctok': "", 'cver': "1.0", 'extension': [], 'lang': "01", 'sid': "8888", 'syscode': "09", 'xsid': "", }, 'count': 20, 'crnVersion': "2020-09-01 22:00:45", 'districtId': f"{aaaa}", # 城市id变化 'index': num, 'isInitialState': True, 'isShowAggregation': True, 'pageId': "214062", 'scene': "DISTRICT", 'sortType': 1, 'token': "JjAmMjAmMCYmNzY4OTYsMTA1NTg5MzUsMjQzMDExNDUsOTA3MDYsMTA3NTgzNTEsNzY4ODQsMTA1NTk3MDYsNTgyNTU0NjEsNzY4ODUsMTA3NTg3MDgsODc4MTksNjE0Mjc1MDYsMTA1MjM0NzIsOTE4NDksMTA1NTg5OTYsODM3NzEsNzY4OTQsMTA2ODkzNDQzLDEwNzU5MDAyLDU3MjM5MjA4LA==", 'traceId': "7e92b543-a074-a68b-6ee1-166c3a697061", '_fxpcqlniredt': '09031137218199825303'}
3.headers 请求头里的参数: Host: m.ctrip.com 表示域名 content-type: application/json 表示发送请求的类型,必须是json类型的字符串,而我们所书写的参数是个字典,所以必须要 json.dumps(data) 这样进行转化 其余的参数我还带了有
'origin','referer','referer','accept-language','cookie'
只要发送请求成功返回数据,接下来解析因该是不会有什么大问题的 但万万没想到,我解析的数据代码写的稀烂 看代码
def jieXi(self,data): pls = data['attractionList'] for pl in pls: # 地址 景点名 价格 评分 距市中心 详情页链接 dizhi = pl['card']['districtName'] jingDianMing = pl['card']['poiName'] # price = pl['card']['price'] 这个位置定位不对 返回的数据有变化 # price = jsonpath.jsonpath(data,'$..price') try: price = jsonpath.jsonpath(data,'$..marketPrice')[0] except: price = jsonpath.jsonpath(data,'$..marketPrice') if price=='false': price = '免费' pingFen = pl['card']['commentScore'] juShiZhongXin = pl['card']['distanceStr'] xiangQingYeLianJie = pl['card']['detailUrl'] print(dizhi,jingDianMing,price,pingFen,juShiZhongXin,'\n',xiangQingYeLianJie) print('===='*30) self.dict_user['地址']=dizhi self.dict_user['景点名']=jingDianMing self.dict_user['价格']=price self.dict_user['评分']=pingFen self.dict_user['距市中心']=juShiZhongXin self.dict_user['详情页链接']=xiangQingYeLianJie self.save(self.dict_user)
简单来说就是:浏览器抓包得到的与实际responce响应到的不一样 95%相似性 就比如价格这个属性 原来的在字典里一层一层的找已经不适用了 要用jsonpath直接定位到, 这样做的坏处也有,返回的是一个列表 看看我保存的json数据
下面的截图是我保存的json数据 |