@@ -25,7 +25,8 @@ public class Extractors {
2525 private List <String > htmlList ;
2626 private Map <String , List <Extractor >> extractorsMap = new LinkedHashMap <>();
2727 private Map <String , List <Filter >> filtersMap = new LinkedHashMap ();
28- private List <Filter > globalFilter = new LinkedList <>();
28+ private List <Filter > beforeFilter = new LinkedList <>();
29+ private List <Filter > afterFilter = new LinkedList <>();
2930 private String prevField ;
3031
3132 public Extractors (String html ) {
@@ -200,8 +201,19 @@ public Extractors filter(Filter filter) {
200201 * @param filter
201202 * @return
202203 */
203- public Extractors filterAll (Filter filter ) {
204- globalFilter .add (filter );
204+ public Extractors before (Filter filter ) {
205+ beforeFilter .add (filter );
206+ return this ;
207+ }
208+
209+ /**
210+ * process all values use filter after field filter
211+ *
212+ * @param filter
213+ * @return
214+ */
215+ public Extractors after (Filter filter ) {
216+ beforeFilter .add (filter );
205217 return this ;
206218 }
207219
@@ -256,8 +268,9 @@ public String asString() {
256268 for (Extractor extractor : extractors ) {
257269 result = extractor .extract (result );
258270 }
259- result = filterGlobal (result );
271+ result = filterBefore (result );
260272 result = filter (DEFAULT_FIELD , result );
273+ result = filterAfter (result );
261274 }
262275 return result ;
263276 }
@@ -280,7 +293,9 @@ public String asJSONString() {
280293 for (Extractor extractor : extractors ) {
281294 result = extractor .extract (result );
282295 }
296+ result = filterBefore (result );
283297 result = filter (DEFAULT_FIELD , result );
298+ result = filterAfter (result );
284299 }
285300 return result ;
286301 }
@@ -305,8 +320,9 @@ public List<String> asStringList(String separator) {
305320 for (Extractor extractor : extractors ) {
306321 result = extractor .extract (result );
307322 }
308- result = filterGlobal (result );
323+ result = filterBefore (result );
309324 result = filter (name , result );
325+ result = filterAfter (result );
310326 stringBuffer .append (result ).append (separator );
311327 }
312328 int length = stringBuffer .length ();
@@ -435,8 +451,9 @@ private <T> T extractBean(String html, Class<T> clazz) {
435451 for (Extractor extractor : extractors ) {
436452 result = extractor .extract (result );
437453 }
438- result = filterGlobal (result );
454+ result = filterBefore (result );
439455 result = filter (name , result );
456+ result = filterAfter (result );
440457 try {
441458 Reflect .on (entity ).set (name , result );
442459 } catch (Exception e ) {
@@ -455,9 +472,9 @@ private Map<String, String> extractMap(String html) {
455472 for (Extractor extractor : extractors ) {
456473 result = extractor .extract (result );
457474 }
458- //global filter all
459- result = filterGlobal (result );
475+ result = filterBefore (result );
460476 result = filter (name , result );
477+ result = filterAfter (result );
461478 try {
462479 map .put (name , result );
463480 } catch (Exception e ) {
@@ -475,8 +492,15 @@ private String filter(String name, String result) {
475492 return result ;
476493 }
477494
478- private String filterGlobal (String result ) {
479- for (Filter filter : globalFilter ) {
495+ private String filterBefore (String result ) {
496+ for (Filter filter : beforeFilter ) {
497+ result = filter .process (result );
498+ }
499+ return result ;
500+ }
501+
502+ private String filterAfter (String result ) {
503+ for (Filter filter : afterFilter ) {
480504 result = filter .process (result );
481505 }
482506 return result ;
0 commit comments