jsonpath解析淘票票,所有购票的城市
解决一些反爬,校验。
复制所有请求头
import urllib.request # 请求url url = 'https://dianying.taobao.com/cityAction.json?activityId&_ksTS=1629789477003_137&jsoncallback=jsonp138&action=cityAction&n_s=new&event_submit_doGetAllRegion=true' # 请求头 headers = { # 去掉带 :冒号 的请求头 # ':authority': 'dianying.taobao.com', # ':method': 'GET', # ':path': '/cityAction.json?activityId&_ksTS=1629789477003_137&jsoncallback=jsonp138&action=cityAction&n_s=new&event_submit_doGetAllRegion=true', # ':scheme': 'https', 'accept': 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01', # 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9', 'cookie': 'cna=UkO6F8VULRwCAXTqq7dbS5A8; miid=949542021157939863; sgcookie=E100F01JK9XMmyoZRigjfmZKExNdRHQqPf4v9NIWIC1nnpnxyNgROLshAf0gz7lGnkKvwCnu1umyfirMSAWtubqc4g%3D%3D; tracknick=action_li; _cc_=UIHiLt3xSw%3D%3D; enc=dA18hg7jG1xapfVGPHoQCAkPQ4as1%2FEUqsG4M6AcAjHFFUM54HWpBv4AAm0MbQgqO%2BiZ5qkUeLIxljrHkOW%2BtQ%3D%3D; hng=CN%7Czh-CN%7CCNY%7C156; thw=cn; _m_h5_tk=3ca69de1b9ad7dce614840fcd015dcdb_1629776735568; _m_h5_tk_enc=ab56df54999d1d2cac2f82753ae29f82; t=874e6ce33295bf6b95cfcfaff0af0db6; xlly_s=1; cookie2=13acd8f4dafac4f7bd2177d6710d60fe; v=0; _tb_token_=e65ebbe536158; tfstk=cGhRB7mNpnxkDmUx7YpDAMNM2gTGZbWLxUZN9U4ulewe025didli6j5AFPI8MEC..; l=eBrgmF1cOsMXqSxaBO5aFurza77tzIRb8sPzaNbMiInca6OdtFt_rNCK2Ns9SdtjgtfFBetPVKlOcRCEF3apbgiMW_N-1NKDSxJ6-; isg=BBoas2yXLzHdGp3pCh7XVmpja8A8S54lyLj1RySTHq14l7vRDNufNAjpZ2MLRxa9', 'referer': 'https://dianying.taobao.com/', 'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"', 'sec-ch-ua-mobile': '?0', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36', 'x-requested-with': 'XMLHttpRequest', } # 请求对象的定制 request = urllib.request.Request(url = url, headers = headers) # 模拟浏览器,向服务器发出请求 response = urllib.request.urlopen(request) # 获取响应数据(read读方法返回字节形式二进制数据.decode解码) content = response.read().decode('utf-8') # 去掉json文件中的 jsonp(); # split 切割,用(切 取列表中的第2个元素.再用)切一次 取列表中的第1元素 content = content.split('(')[1].split(')')[0] # 保存josn文件 with open('jsonpath解析淘票票.json','w',encoding='utf-8')as fp: fp.write(content) import json import jsonpath # 读取josn文件 obj = json.load(open('jsonpath解析淘票票.json','r', encoding='utf-8')) # 获取所有的城市名字 city_list = jsonpath.jsonpath(obj, '$..regionName') print(city_list)
注意:切割字符串,返回被切割的列表。
切割之前数据
用( 切
用(切完取列表中的第二个元素. 再 用) 切一次
用(切 取列表中的第2个元素.再用)切一次 取列表中的第1元素。就得到想要的中间数据