JMeter正则表达式提取器使用详解
Posted sxdtzhp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMeter正则表达式提取器使用详解相关的知识,希望对你有一定的参考价值。
整体目录结构:
http请求的访问地址为:
http://www.stats.gov.cn//tjsj/tjbz/tjyqhdmhcxhfdm/2019/14/1402.html
需要抓取的内容为:
<tr class='countytr'><td><a href='02/140212.html'>140212000000</a></td><td><a href='02/140212.html'>新荣区</a></td></tr>
<tr class='countytr'><td><a href='02/140213.html'>140213000000</a></td><td><a href='02/140213.html'>平城区</a></td></tr>
<tr class='countytr'><td><a href='02/140214.html'>140214000000</a></td><td><a href='02/140214.html'>云冈区</a></td></tr>
<tr class='countytr'><td><a href='02/140215.html'>140215000000</a></td><td><a href='02/140215.html'>云州区</a></td></tr>
……
因此正则表达式为:
countytr'><td><a href='([^']*)'>([^<]*)</a></td><td><a href='([^']*)'>([^<]*)<
正则表达式解释:
^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)
* 表示匹配 零次到多次
( ) 小括号表示匹配括号中全部字符
[ ] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]
上述正则表达式中有4对(),因素定义4个模板,分别获取匹配到的4个值。
匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1。
获取的值为:
str_1=02/140212.html,140212000000,02/140212.html,新荣区
str_1_g=4
str_1_g0=countytr'><td><a href='02/140212.html'>140212000000</a></td><td><a href='02/140212.html'>新荣区<
str_1_g1=02/140212.html
str_1_g2=140212000000
str_1_g3=02/140212.html
str_1_g4=新荣区
str_2=02/140213.html,140213000000,02/140213.html,平城区
str_2_g=4
str_2_g0=countytr'><td><a href='02/140213.html'>140213000000</a></td><td><a href='02/140213.html'>平城区<
str_2_g1=02/140213.html
str_2_g2=140213000000
str_2_g3=02/140213.html
str_2_g4=平城区
……
str_11=02/140271.html,140271000000,02/140271.html,山西大同经济开发区
str_11_g=4
str_11_g0=countytr'><td><a href='02/140271.html'>140271000000</a></td><td><a href='02/140271.html'>山西大同经济开发区<
str_11_g1=02/140271.html
str_11_g2=140271000000
str_11_g3=02/140271.html
str_11_g4=山西大同经济开发区
str_matchNr=11
采用循环控制器取全部的值,循环次数为str_matchNr,即正则表达式取到的数组个数。
循环控制器会从1循环到最大值。
在循环过程中增加一个计数器用于取当前循环值, java请求用于显示循环过程中取到的值。
$__V(str_$counter1_g1)
$__V(str_$counter1_g2)
$__V(str_$counter1_g3)
$__V(str_$counter1_g4)
分别是获取到的4个值,其中counter1是计数器,str是正则表达式定义的返回值前缀,__V是JMeter的函数,用于变量嵌套。
再增加调试取样器用于跟踪分析,查看结果数用于显示执行结果。
在循环过程中可以增加BeanShell取样器把执行结果写到文件中,也可以通过JDBC Request记录到数据库中。
以上是关于JMeter正则表达式提取器使用详解的主要内容,如果未能解决你的问题,请参考以下文章