jsonpath解析淘票票城市

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: jsonpath解析淘票票城市

image.png

步骤:

首先找到城市的接口通过F12打开检查点击北京即可得到爬取数据的接口

image.png

打开url发现显示的是jsonp121({“returnCode”:“0”,“returnValue”:{}});

原因:

淘票票的请求头给了我们数据限制

复制表头参数 重要的一般是’cookie’,‘referer’,‘user-agent’

image.png

获取城市数据

image.png

发现这不是我们想要的json文件格式

image.png

解决方式进行切割

#split切割
content = content.split('(')[1].split(')')[0]
with open('淘票票.json','w',encoding='utf-8')as fp:
    fp.write(content)
print(content)

下载解析json文件

import json
import jsonpath
obj =json.load(open('淘票票.json','r',encoding='utf-8'))
city_list = jsonpath.jsonpath(obj,'$..regionName')
print(city_list)

补充知识:

jsonpath的使用:
obj = json.load(open('json文件', 'r', encoding='utf‐8'))
ret = jsonpath.jsonpath(obj, 'jsonpath语法')

注意:

load方法里不能用字符串

运行结果:

image.png

总结:

首先最重要的是要找对接口,其次是对一般表头数据的要求要知道,对jsonp109({“returnCode”:“0”,…})处理方式就是通过字符的split方法进行删除。

源码:

# _*_ coding : utf-8 _*_
# @Time : 2023/3/22 16:35
# @Author : 断墨寻径
# @File : 解析_jsonpath
# @Project : pcdemo
import urllib.request
url = 'https://dianying.taobao.com/cityAction.json?activityId&_ksTS=1679575747018_108&jsoncallback=jsonp109&action=cityAction&n_s=new&event_submit_doGetAllRegion=true'
headers ={
    'cookie': 'cna=umrQGdUWKXoCAW/xdE1lTH4W; t=9bd59de8d4a9f4ec0cf4e18ee4897dc8; cookie2=1cdd430472150b3ca9976420464748bd; v=0; _tb_token_=fbe33ee5704ae; xlly_s=1; tb_city=110100; tb_cityName="sbG+qQ=="; tfstk=c6FVBRqWYsCqSGzOvbca4AS_gEnAZYmiAQuEnGUC0BdRN4Dci0KtrmgxzV8yjxf..; l=fBjD4TMVNPS2j0SUBO5BFurza77TrIRb4sPzaNbMiIEGa6_OTF1AgNCsp8Pe7dtjgTCmNetr24w81dLHR3A0hc0c07kqm0-Z3xvtaQtJe; isg=BCcnDl3mDyIPc4uuqWRXYGkQtlvxrPuODJE8JPmUj7bd6EeqAXxP3ijuCuj2ANMG',
    'referer': 'https://dianying.taobao.com/?spm=a1z21.3046609.header.1.77be112avBjLqb&n_s=new',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}
request = urllib.request.Request(url=url,headers=headers)
response = urllib.request.urlopen(request)
content = response.read().decode('utf-8')
print(content)
#split切割
content = content.split('(')[1].split(')')[0]
with open('淘票票.json','w',encoding='utf-8')as fp:
    fp.write(content)
print(content)
import json
import jsonpath
obj =json.load(open('淘票票.json','r',encoding='utf-8'))
city_list = jsonpath.jsonpath(obj,'$..regionName')
print(city_list)


相关文章
|
XML JSON Java
JSONPath 解析 JSON
JSONPath 解析 JSON
130 0
|
网络协议 Go 数据库
golang是用GeoIP数据库解析IP到城市jsonRPC服务教程
RESTful接口 请求URL: https://api.turboes.com/Tbsapi/v1/ip2addr?ip=219.140.227.235 请求方式: GET 参数: 参数名 类型 说明 ip url-qurey-string 可选 要查询的ip地址,如果不传这表示当前.
4482 0
|
11天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
39 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
70 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
57 0
|
1月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
62 0
|
1月前
|
安全 Java 程序员
Collection-Stack&Queue源码解析
Collection-Stack&Queue源码解析
84 0

推荐镜像

更多
下一篇
无影云桌面