javajsonpath的简单介绍
本篇文章给大家谈谈javajsonpath,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何用java爬虫爬取招聘信息
- 2、单元测试介绍(Springboot实战)
- 3、正则表达式、xpath、BeautifulSoup和JSONPath的区别?
- 4、使用jmeter做接口测试,怎么验证,核对响应结果中json的内容
- 5、meterSphere使用文档
如何用java爬虫爬取招聘信息
1、思路:
明确需要爬取的信息
分析网页结构
分析爬取流程
优化
2、明确需要爬取的信息
职悔谈位名称
工资
职位描述
公司名称
公司主页
详情网页
分析网页结构
3、目标网站-拉勾网
网站使用json作为交互数据,分析json数据,需要的json关键数据
查看需要的信息所在的位置,使用Jsoup来解析网页
4、分析爬取流程
1.获取所有的positionId生成详情页,知前蚂存放在一个存放网址列表中ListString joburls
2.获取每个详情页并解析为Job类,得到一个存放Job类的列表ListJob jobList
3.把ListJob jobList存进Excel表格中
Java操作Excel需要用到jxl
5、关键代码实现
public ListString getJobUrls(String gj,String city,String kd){
String pre_url="搭埋";
String end_url=".html";
String url;
if (gj.equals("")){
url=";city="+city+"needAddtionalResult=falsefirst=falsepn="+pn+"kd="+kd;
}else {
url=""+gj+"px=defaultcity="+city+"needAddtionalResult=falsefirst=falsepn="+pn+"kd="+kd;
}
String rs=getJson(url);
System.out.println(rs);
int total= JsonPath.read(rs,"$.content.positionResult.totalCount");//获取总数
int pagesize=total/15;
if (pagesize=30){
pagesize=30;
}
System.out.println(total);
// System.out.println(rs);
ListInteger posid=JsonPath.read(rs,"$.content.positionResult.result[*].positionId");//获取网页id
for (int j=1;j=pagesize;j++){ //获取所有的网页id
pn++; //更新页数
url=""+gj+"px=defaultcity="+city+"needAddtionalResult=falsefirst=falsepn="+pn+"kd="+kd;
String rs2=getJson(url);
ListInteger posid2=JsonPath.read(rs2,"$.content.positionResult.result[*].positionId");
posid.addAll(posid2); //添加解析的id到第一个list
}
ListString joburls=new ArrayList();
//生成网页列表
for (int id:posid){
String url3=pre_url+id+end_url;
joburls.add(url3);
}
return joburls;
}
public Job getJob(String url){ //获取工作信息
Job job=new Job();
Document document= null;
document = Jsoup.parse(getJson(url));
job.setJobname(document.select(".name").text());
job.setSalary(document.select(".salary").text());
String joball=HtmlTool.tag(document.select(".job_bt").select("div").html());//清除html标签
job.setJobdesc(joball);//职位描述包含要求
job.setCompany(document.select(".b2").attr("alt"));
Elements elements=document.select(".c_feature");
//System.out.println(document.select(".name").text());
job.setCompanysite(elements.select("a").attr("href")); //获取公司主页
job.setJobdsite(url);
return job;
}
void insertExcel(ListJob jobList) throws IOException, BiffException, WriteException {
int row=1;
Workbook wb = Workbook.getWorkbook(new File(JobCondition.filename));
WritableWorkbook book = Workbook.createWorkbook(new File(JobCondition.filename), wb);
WritableSheet sheet=book.getSheet(0);
for (int i=0;ijobList.size();i++){ //遍历工作列表,一行行插入到表格中
sheet.addCell(new Label(0,row,jobList.get(i).getJobname()));
sheet.addCell(new Label(1,row,jobList.get(i).getSalary()));
sheet.addCell(new Label(2,row,jobList.get(i).getJobdesc()));
sheet.addCell(new Label(3,row,jobList.get(i).getCompany()));
sheet.addCell(new Label(4,row,jobList.get(i).getCompanysite()));
sheet.addCell(new Label(5,row,jobList.get(i).getJobdsite()));
row++;
}
book.write();
book.close();
}
[img]单元测试介绍(Springboot实战)
单元测试是对一个模块、一个函数、或者一个搜此类来进行正确性检验的测试工作。
比如对方法testOne(double a),我们可以编写一下几个测试用例:
输入正数,比如1、1.2、0.99,期待返回值和输入相同;
输入负数,比如-1、-1.2、-0.99,期待返回值与输入相反;
输入0,期待返回0;
输入非数值类型,比如“”、[]、{},期待抛出Error。
把上面的测试用例放到一个测试模块里,就是一个完整的单元测试。
新建一个测试类,可以通过编程工具的插件自动生成测试类(比如:IDEA的Junit Generator),也可以自己手动建立。
在测试类中引入所需要的类和包,测试可以使用junit jar包辅助也可以不用,直接main方法运行要测纳袜试的代码、业务。
通过一些可以做日志的jar包(比如log4j),在各个测试的数据前后将其输出出来,方便观察测试过程中代码的运行情况,也可以System.out.println(),自行设置便于观察的输出格式。
引入依赖
单元测试依赖 展开源码
引入spring -boot-starter-test后,有如下几个库:
-Junit —— The de-facto standard for unit testing Java applications
-Spring Test Spring Boot Test —— Utilities and integration test support for Spring Boot applications
-AssertJ —— A fluent assertion libraray
-Hamcrest —— A library of matcher objects(also known as constraints or predicates)
-Mockito —— A Java mocking framework
-JSONNassert —— An assertion library for JSON
-JsonPath —— XPath for Json
在src/main下建立UserService类,对其进行单元测试,生成的单元测试类在src/test下,
直接在测试类上面加上如下两个世茄迅注解
@RunWith(SpringRunner.class)
@SpringBootTest
就可以取到spring中的容器的实例,如果配置了@Autowired那么久自动将对象注入
折叠源码
折叠源码
折叠源码
正则表达式、xpath、BeautifulSoup和JSONPath的区别?
1.正则表达式是进行内容匹配,将符合要求的内容全部获取;xpath()能将字符串转化为标签,它会检测字符串内容是否为标签,汪改扰但是不能检
测出内容是否为真的标签;Beautifulsoup是Python的一个第三方库,它的作用和 xpath 作用一样,都是用来解析html数据的相比之下,
xpath的速度会快一点,因为xpath底层是用c来实现的
2.三者语法不同,正则表达式使用元字符,将所有获得内容与匹配条件进行匹配,而xpath和bs4将歼举获取的解析后的源码进行按条件筛选,筛选
出想要的标签即根据标签属性来找到指定的标困旦签,之后对标签进行对应内容获取。
使用jmeter做接口测试,怎么验证,核对响应结果中json的内容
Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛。而 Apache 的 JMeter 也是较锋樱受欢迎的压力测试工具之一,但是它本身没有提供对于 Json 数据的响应处理。本文中假设需要从 HTTP 的响应头中返回的 Json 格式的数据流中抽取某些特定的数据,数据格式如下:{"name":"Simpsons family","members":[{"firstName":"Homer", "lastName":"Simpson"},{"firstName":"Marge", "lastName":"Simpson"},{"firstName":"Bart", "lastName":"Simpson"},{"firstName":"Lisa", "lastName":"Simpson"},{"firstName":"Maggie", "lastName":"Simpson"}]}下面我们使用不同的方法来进行数据的抽取工作:正则表达式提取JMeter 安装了正则表达式插件之后,可以按照固定的格式从字符串中提取数据,而本例中正则表达式如下所示:"firstName":"(.+?)"使用了该表达式之后会返回所有服从表达式的字符串,但是只有一个表达式是我们所关注的。可以使用$1$ 来作为模板,而 3 则会返回第三个数据。当偶尔需要对Json数据进行处理时,正则表达式是一个合适的选择,它的一个优势在于JMeter本身就内置了Json处理模块。但是,阅读处理正则表达式却是比较复杂的,特别是对于某些复杂的Json数据。JMeter JSON 插件另一种处理 Json 数据的方法是使用 JMeter 的插件,该插件可以使用 JSONPath 来获取 JSON 数据中特定位置的数据。类似于 XML 文件中的 XPath , JSONPath 可以使用简单的表达式来操作 Json 对象。 JSON Path Extractor 是一个开源的增加了 post处理器的银绝丛插件,可以将该插件的 Lib 文件拷贝到 JMeter 的 lib 目宏液录下即可。而上文中提及的需要定位的数据可以使用如下的JSONPath 进行描述:$.members[2].firstName在 JMeter 中,只需要从 PostProcessor 菜单中打开 JSON Path Extractor 然后输入变量名与默认值即可,如下所示:JSONPath 表达式较短并且易于阅读,能够有效提高测试脚本的易维护性,该插件并不随着标准的 JMeter 一起安装。BeanShell Post Processor最后一种方法即是借用了 JMeter 的对于 BeanShell 支持的特性, BeanShell 是一个轻量级的面向 Java 的脚本语言。 BeanShell Post Processor 允许使用标准的 Java 语法来处理 Json 数据,使用方法如下图所示:总结本文列举出了三种可用的从 Json 格式的返回值中提取数据的方法,正则表达式对于简单的 Json 格式的数据的快速标准化非常占优势。而 JsonPath 插件可以用于创建能够被维护修改的脚本,但是需要额外的插件安装工作。而最后的带 JSON 库的BeanShell 确实非常详细并且依赖于 Java 语言的灵活性可以进行进一步的开发。
meterSphere使用文档
使用流程:首先我们拿到账号后需要 创建项目 ,为项目配置环境域名,在项目管理内还可以设置用户自定义变量、默认请求腊睁头操作;创建好项目后点击接口测试,选择该项目新建模块树用来管理接口集合,接下来创建 接口定义 ,就是把一个接口中的所需内容填写进去,包括接口名称、接口路径、请求方法、请求体、请求头部。填写完接口定义后点击保存,此时在对应模块的api列表中就能看到该接口定义;保存后点击测试会跳转到接口测试页面,需要验证接口是否能正常请求通过,这部分属于 用例设计 ,可以给用例添加断稿局帆言、添加前置脚本、添加后置脚本、提取参数等操作,用例添加完需要另存为新用例,此时在对应模块的case列表里可以看到该用例;针对场景用例,需要在 接口自动化 里创建场景,然后引用已有的单接口用例来串成需要的场景用例进行调试。
官方文档
自定义变量添加(非必须,有需要自行添加),例如在多处需要用到该参数,就可以添加一个自定义变量。
环境域名配置,这个是必须添加的,运行用例的时候需要选择运行环境。请求头的设置非必须,根据需要可以自行配置
官方文档
配置好项目环境后,可以开始录入接口定义,通过左侧模块树来管理接口集合,模块树最多支持8级。
创建接口定义
点击测试,跳转到接口测试页面调试接口能正常请求
如果能正常请求通过,进行下一步添加断言
断言规则有5种,最简单的就是通过jsonpath
断言返回消息体内容,如果只是断键雹言网络状态码的200,就没什么意义了
前置脚本、后置脚本使用,复杂的场景通过beanshell脚本可以做自己想要的逻辑处理,需要自己写好java程序打jar包,在项目管理中上传jar包,然后再导入包名底下的类,进行类实例化再调类里的方法来使用。变量的获取跟设置的方法与jmeter里的beanshell脚本里一致。
通过引用用例列表中的用例来组织想要的场景,例如老师约课,需要先走老师登录获再获取课程列表,然后约课。
复制的用例后期用例更改不会影响到场景里引用的用例,引用的用例再后期用例更改,也会同步影响场景里的用例,看自己需要是复制还是引用。
用例引用列表可拖动调整用例上下顺序
关于javajsonpath和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。