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正则表达式提取器使用详解的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter中正则表达式提取器使用详解

详解JMeter正则表达式提取器

Jmeter正则表达式提取器详解

JMeter正则表达式提取器使用详解

Jmeter系列(27)- 详解正则提取器

小贞贞jmeter关于正则表达式提取器详解