• 网页元素解析a标签


    前言

    网页元素的解析,本章重点如何解析A标签。

    网页元素示例(浏览器截取,供参考)

    <div class="related-tags">
        <span>相关主题推荐:span>
          a<a href='http://www.csdn.net/tag/标签' target="_blank">标签a>
          <a href="http://www.csdn.net/tag/java" target="_blank">javaa>
          <a href="http://www.csdn.net/tag/团购" target="_blank">团购a>
          <a href="http://www.csdn.net/tag/体育" target="_blank">体育a>
          <a href="http://www.csdn.net/tag/搜狐" icon='a' target="_blank">搜狐a>
    <img src="/i/eg_tulip2.jpg"  alt="上海鲜花港 - 郁金香"><img src="/i/eg_tulip.jpg"  alt="上海鲜花港 - 郁金香" />  div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    如何解析

    网页元素分为对称的标签和非堆成标签。

    对称标签如<a>xxxa>,非对称标签如<img/>
    
    • 1

    (1)因此此处定义为isSingleNode,是否为单节点标签

    /**
     * 网页节点
     * 
     * @author leng
     *
     */
    public class WebNode implements Serializable {
    
    	/**
    	 * 节点中间的内容
    	 */
    	private String content;
    
    	/**
    	 * 参数
    	 */
    	private TreeMap<String, String> params = new TreeMap<>();
    
    	/**
    	 * 标签类型
    	 */
    	private String labelType;
    
    	/**
    	 * 是否单节点
    	 */
    	private boolean isSingleNode;
    
    	public String getContent() {
    		return content;
    	}
    
    	public void setContent(String content) {
    		this.content = content;
    	}
    
    	public TreeMap<String, String> getParams() {
    		return params;
    	}
    
    	public void setParams(TreeMap<String, String> params) {
    		this.params = params;
    	}
    
    	public String getLabelType() {
    		return labelType;
    	}
    
    	public void setLabelType(String labelType) {
    		this.labelType = labelType;
    	}
    
    	public boolean isSingleNode() {
    		return isSingleNode;
    	}
    
    	public void setSingleNode(boolean isSingleNode) {
    		this.isSingleNode = isSingleNode;
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61

    (2)字符串的操作类,辅助作用

    /**
     * 字符串操作
     * 
     * @author leng
     *
     */
    public class StrUtil {
    	
    	public static boolean isEmpty(String string){
    		return null==string||string.equals("");
    	}
    	
    	public static boolean isNotEmpty(String string){
    		return null!=string&&!string.equals("");
    	}
    
    	/**
    	 * 将字符串string重复n次,通过seg进行分割连接
    	 * 
    	 * @param string 需要重复的字符串
    	 * @param n      重复次数
    	 * @param seg    分割字符串,如果等于null,则为""
    	 * @return
    	 */
    	public static String repeatString(String string, int n, String seg) {
    		if (null == seg) {
    			seg = "";
    		}
    
    		/**
    		 * 并非不用其他方法实现,因为这种方法是性能最好的写法
    		 */
    		StringBuffer sb = new StringBuffer();
    		for (int i = 0; i < n; i++) {
    			sb.append(string).append(seg);
    		}
    		return sb.substring(0, sb.length() - seg.length());
    		// return String.join(seg, Collections.nCopies(n, string));
    	}
    
    	/**
    	 * 将num重复n次,通过seg进行分割符号连接
    	 * 
    	 * @param num 需要重复的数值
    	 * @param n   重复次数
    	 * @param seg 分割字符串,如果等于null,则为""
    	 * @return
    	 */
    	public static String repeatString(int num, int n, String seg) {
    		return repeatString(num + "", n, seg);
    	}
    
    	/**
    	 * 将num重复n次,分割字符串为英文逗号","
    	 * 
    	 * @param num 需要重复的数值
    	 * @param n   重复次数
    	 * @param seg 分割字符串,如果等于null,则为""
    	 * @return
    	 */
    	public static String repeatString(int num, int n) {
    		return repeatString(num + "", n, ",");
    	}
    
    	/**
    	 * 将int数组转换成字符串
    	 * 
    	 * @param intArray
    	 * @return
    	 */
    	public static String IntArrayToString(Integer[] intArray) {
    		if (null != intArray) {
    			StringBuffer sb = new StringBuffer();
    			for (Integer a : intArray) {
    				if (null != a) {
    					sb.append(",").append(a);
    				}
    			}
    
    			if (sb.length() > 0) {
    				return sb.substring(1);
    			}
    		}
    		return null;
    	}
    
    	/**
    	 * 字符串str是否存在于字符串array数组中
    	 * 
    	 * @param array      字符串数组
    	 * @param str        字符串
    	 * @param ignoreCase 是否忽略大小写
    	 * @return
    	 */
    	public static boolean isExist(String[] array, String str, boolean ignoreCase) {
    		if (null != array && null != str) {
    			for (String s : array) {
    				if (ignoreCase) {
    					if (s.equalsIgnoreCase(str)) {
    						return true;
    					}
    				} else {
    					if (s.equals(str)) {
    						return true;
    					}
    				}
    			}
    		}
    		return false;
    	}
    
    	/**
    	 * 将字符串按照splitStr进行分割,并转换成{@code List}集合
    	 * 
    	 * @param string
    	 * @param splitStr
    	 * @return
    	 */
    	public static List<Integer> parseList(String string, String splitStr) {
    		if (isEmpty(string)) {
    			return null;
    		}
    		String[] arrays = string.split(splitStr);
    		List<Integer> list = new ArrayList<>(arrays.length);
    		for (String str : arrays) {
    			try {
    				if (isNotEmpty(str)) {
    					Integer num = Integer.parseInt(str);
    					list.add(num);
    				}
    			} catch (Exception e) {
    			}
    		}
    		return list;
    	}
    
    	/**
    	 * 将字符串按照逗号,进行分割,并转换成{@code List}集合
    	 * 
    	 * @param string
    	 * @return
    	 */
    	public static List<Integer> parseList(String string) {
    		return parseList(string, ",");
    	}
    
    	/**
    	 * 将字符串按照splitStr进行分割,并转换成{@code Set}集合
    	 * 
    	 * @param string
    	 * @param splitStr
    	 * @return
    	 */
    	public static Set<Integer> parseSet(String string, String splitStr) {
    		if (isEmpty(string)) {
    			return null;
    		}
    		String[] arrays = string.split(splitStr);
    		Set<Integer> set = new HashSet<>();
    		for (String str : arrays) {
    			try {
    				if (isNotEmpty(str)) {
    					Integer num = Integer.parseInt(str);
    					set.add(num);
    				}
    			} catch (Exception e) {
    			}
    		}
    		return set;
    	}
    
    	/**
    	 * 将字符串按照逗号,进行分割,并转换成{@code Set}集合
    	 * 
    	 * @param string
    	 * @return
    	 */
    	public static Set<Integer> parseSet(String string) {
    		return parseSet(string, ",");
    	}
    
    	/**
    	 * 将字符串按照splitStr进行分割,并转换成{@code Set}集合
    	 * 
    	 * @param string
    	 * @param splitStr
    	 * @return
    	 */
    	public static Set<String> parseSetString(String string, String splitStr) {
    		if (isEmpty(string)) {
    			return null;
    		}
    		String[] arrays = string.split(splitStr);
    		Set<String> set = new HashSet<>();
    		for (String str : arrays) {
    			try {
    				set.add(str);
    			} catch (Exception e) {
    			}
    		}
    		return set;
    	}
    
    	/**
    	 * 将字符串转换成map,示例 string="1-2,3-4,5-6",seg1=",",seg2="-" 转换为map后,{1=2,3=4,5=6}
    	 * 
    	 * @param string 被切割的字符串
    	 * @param seg1   分割符号1
    	 * @param seg2   分割符号2
    	 * @return
    	 */
    	public static Map<String, String> stringToMap(String string, String seg1, String seg2) {
    		if (isNotEmpty(string)) {
    			String[] arr = string.split(seg1);
    			Map<String, String> map = new HashMap<>(arr.length);
    			for (String s : arr) {
    				if (isNotEmpty(s)) {
    					String[] arr2 = s.split(seg2);
    					if (arr2.length == 1) {
    						map.put(arr2[0], null);
    					} else if (arr2.length >= 2) {
    						map.put(arr2[0], arr2[1]);
    					}
    				}
    			}
    			return map;
    		}
    		return null;
    	}
    
    	/**
    	 * 将字符串转换成map,示例 string="1-2,3-4,5-6" 转换为map后,{1=2,3=4,5=6}
    	 * 
    	 * @param string
    	 * @return
    	 */
    	public static Map<String, String> stringToMap(String string) {
    		return stringToMap(string, ",", "-");
    	}
    
    	/**
    	 * 替换首逗号,如果字符串的开头不是逗号,则原样返还
    	 * 
    	 * @param str
    	 * @return
    	 */
    	public static String repaceFirstComma(String str) {
    		if (null == str) {
    			return null;
    		}
    
    		if (str.startsWith(",")) {
    			return str.substring(1);
    		}
    
    		return str;
    	}
    
    	/**
    	 * 字符串数组转int数组
    	 * 
    	 * @param array
    	 * @return
    	 */
    	public static int[] strArrayToIntArray(String[] array) {
    		int[] intArray = new int[0];
    		for (String s : array) {
    			if (isNotEmpty(s)) {
    				intArray = Arrays.copyOf(intArray, intArray.length + 1);
    				intArray[intArray.length - 1] = Integer.parseInt(s);
    			}
    		}
    		return intArray;
    	}
    
    	/**
    	 * 去掉指定字符前后的空格
    	 * 
    	 * @param string
    	 * @param specialStr
    	 * @return
    	 */
    	public static String trim(String string, String specialStr) {
    		if (null == string) {
    			return null;
    		}
    
    		String s1 = " " + specialStr;
    		while (string.indexOf(s1) > -1) {
    			string = string.replaceAll(s1, specialStr);
    		}
    
    		String s2 = specialStr + " ";
    		while (string.indexOf(s2) > -1) {
    			string = string.replaceAll(s2, specialStr);
    		}
    
    		return string;
    	}
    
    	public static void main(String[] args) {
    		int times = 300_000_000;
    
    	}
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307

    (3)核心的解析

    /**
     * 网页工具
     * 
     * @author leng
     *
     */
    public class WebpageUtil {
    
    	/**
    	 * 从网页中获取标题
    	 * 
    	 * @param html
    	 * @return
    	 */
    	public static String getTitleFromHtmlString(String html) {
    		int startIndex = html.indexOf(""</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token keyword">int</span> endIndex <span class="token operator">=</span> html<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"");
    		if (startIndex == -1 || endIndex == -1) {
    			return null;
    		}
    
    		String title = html.substring(startIndex + (""</span><span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span> endIndex<span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token keyword">return</span> title<span class="token punctuation">;</span>
    	<span class="token punctuation">}</span>
    
    	<span class="token comment">/**
    	 * 获取节点(不支持节点内包含节点)
    	 * 
    	 * @param html
    	 * @return
    	 */</span>
    	<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name">List</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">String</span><span class="token punctuation">></span></span> <span class="token function">getNode</span><span class="token punctuation">(</span><span class="token class-name">String</span> html<span class="token punctuation">,</span> <span class="token class-name">String</span> nodeType<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    		<span class="token class-name">String</span> endStr <span class="token operator">=</span> <span class="token string">"</"</span> <span class="token operator">+</span> nodeType <span class="token operator">+</span> <span class="token string">">"</span><span class="token punctuation">;</span>
    		<span class="token class-name">String</span> regex<span class="token punctuation">;</span>
    		<span class="token keyword">if</span> <span class="token punctuation">(</span>html<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>endStr<span class="token punctuation">)</span> <span class="token operator">></span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    			regex <span class="token operator">=</span> <span class="token string">"<a(\\s+\\w+\\s*=\\s*(\"|\')?(.*?)[\"|\'])*>(.*?)</a>"</span><span class="token punctuation">;</span><span class="token comment">// 成对标签的元素(例如<a></a>)</span>
    		<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{<!-- --></span>
    			regex <span class="token operator">=</span> <span class="token string">"<a(\\s+\\w+\\s*=\\s*(\"|\')?(.*?)[\"|\'|\\s])*\\s*\\/?>"</span><span class="token punctuation">;</span><span class="token comment">// 单标签的元素(例如<img>)</span>
    		<span class="token punctuation">}</span>
    
    		regex <span class="token operator">=</span> regex<span class="token punctuation">.</span><span class="token function">replaceAll</span><span class="token punctuation">(</span><span class="token string">"a"</span><span class="token punctuation">,</span> nodeType<span class="token punctuation">)</span><span class="token punctuation">;</span>
    
    		<span class="token class-name">Pattern</span> p <span class="token operator">=</span> <span class="token class-name">Pattern</span><span class="token punctuation">.</span><span class="token function">compile</span><span class="token punctuation">(</span>regex<span class="token punctuation">,</span> <span class="token class-name">Pattern</span><span class="token punctuation">.</span>CASE_INSENSITIVE<span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token class-name">Matcher</span> m <span class="token operator">=</span> p<span class="token punctuation">.</span><span class="token function">matcher</span><span class="token punctuation">(</span>html<span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token class-name">ArrayList</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">String</span><span class="token punctuation">></span></span> list <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayList</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">String</span><span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token keyword">while</span> <span class="token punctuation">(</span>m<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    			<span class="token class-name">String</span> link <span class="token operator">=</span> m<span class="token punctuation">.</span><span class="token function">group</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    			list<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>link<span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token punctuation">}</span>
    
    		<span class="token keyword">return</span> list<span class="token punctuation">;</span>
    	<span class="token punctuation">}</span>
    
    	<span class="token comment">/**
    	 * 获取节点
    	 * 
    	 * @param html
    	 * @return
    	 */</span>
    	<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token class-name">List</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">WebNode</span><span class="token punctuation">></span></span> <span class="token function">getNode2</span><span class="token punctuation">(</span><span class="token class-name">String</span> html<span class="token punctuation">,</span> <span class="token class-name">String</span> labelType<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    		<span class="token class-name">String</span> endStr <span class="token operator">=</span> <span class="token string">"</"</span> <span class="token operator">+</span> labelType <span class="token operator">+</span> <span class="token string">">"</span><span class="token punctuation">;</span>
    		<span class="token class-name">String</span> regex<span class="token punctuation">;</span>
    		<span class="token keyword">boolean</span> isSingleNode <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
    		<span class="token keyword">if</span> <span class="token punctuation">(</span>html<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span>endStr<span class="token punctuation">)</span> <span class="token operator">></span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    			regex <span class="token operator">=</span> <span class="token string">"<a(\\s+\\w+\\s*=\\s*(\"|\')?(.*?)[\"|\'])*>(.*?)</a>"</span><span class="token punctuation">;</span><span class="token comment">// 成对标签的元素(例如<a></a>)</span>
    		<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{<!-- --></span>
    			isSingleNode <span class="token operator">=</span> <span class="token boolean">true</span><span class="token punctuation">;</span>
    			regex <span class="token operator">=</span> <span class="token string">"<a(\\s+\\w+\\s*=\\s*(\"|\')?(.*?)[\"|\'|\\s])*\\s*\\/?>"</span><span class="token punctuation">;</span><span class="token comment">// 单标签的元素(例如<img>)</span>
    		<span class="token punctuation">}</span>
    
    		regex <span class="token operator">=</span> regex<span class="token punctuation">.</span><span class="token function">replaceAll</span><span class="token punctuation">(</span><span class="token string">"a"</span><span class="token punctuation">,</span> labelType<span class="token punctuation">)</span><span class="token punctuation">;</span>
    
    		<span class="token class-name">Pattern</span> p <span class="token operator">=</span> <span class="token class-name">Pattern</span><span class="token punctuation">.</span><span class="token function">compile</span><span class="token punctuation">(</span>regex<span class="token punctuation">,</span> <span class="token class-name">Pattern</span><span class="token punctuation">.</span>CASE_INSENSITIVE<span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token class-name">Matcher</span> m <span class="token operator">=</span> p<span class="token punctuation">.</span><span class="token function">matcher</span><span class="token punctuation">(</span>html<span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token class-name">List</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">WebNode</span><span class="token punctuation">></span></span> list <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">ArrayList</span><span class="token generics"><span class="token punctuation"><</span><span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token keyword">while</span> <span class="token punctuation">(</span>m<span class="token punctuation">.</span><span class="token function">find</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    			<span class="token class-name">WebNode</span> node <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">WebNode</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    			node<span class="token punctuation">.</span><span class="token function">setLabelType</span><span class="token punctuation">(</span>labelType<span class="token punctuation">)</span><span class="token punctuation">;</span>
    			node<span class="token punctuation">.</span><span class="token function">setSingleNode</span><span class="token punctuation">(</span>isSingleNode<span class="token punctuation">)</span><span class="token punctuation">;</span>
    
    			<span class="token class-name">String</span> link <span class="token operator">=</span> m<span class="token punctuation">.</span><span class="token function">group</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    
    			<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>isSingleNode<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    				<span class="token keyword">int</span> startIndex <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> link<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">lastIndexOf</span><span class="token punctuation">(</span><span class="token string">">"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    				<span class="token keyword">int</span> endIndex <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">lastIndexOf</span><span class="token punctuation">(</span><span class="token string">"<"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    				<span class="token keyword">if</span> <span class="token punctuation">(</span>startIndex <span class="token operator">></span> <span class="token operator">-</span><span class="token number">1</span> <span class="token operator">&&</span> endIndex <span class="token operator">></span> <span class="token operator">-</span><span class="token number">1</span> <span class="token operator">&&</span> endIndex <span class="token operator">></span> startIndex<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    					<span class="token class-name">String</span> content <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>startIndex <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">,</span> endIndex<span class="token punctuation">)</span><span class="token punctuation">;</span>
    					node<span class="token punctuation">.</span><span class="token function">setContent</span><span class="token punctuation">(</span>content<span class="token punctuation">)</span><span class="token punctuation">;</span>
    				<span class="token punctuation">}</span>
    			<span class="token punctuation">}</span>
    
    			<span class="token keyword">int</span> startIndex2 <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"<"</span> <span class="token operator">+</span> labelType<span class="token punctuation">)</span><span class="token punctuation">;</span>
    
    			<span class="token class-name">String</span> str <span class="token operator">=</span> <span class="token keyword">null</span><span class="token punctuation">;</span>
    			<span class="token keyword">if</span> <span class="token punctuation">(</span>isSingleNode<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    				str <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>startIndex2 <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token string">"<"</span> <span class="token operator">+</span> labelType<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    			<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{<!-- --></span>
    				<span class="token keyword">int</span> startIndex <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> link<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">lastIndexOf</span><span class="token punctuation">(</span><span class="token string">">"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    				str <span class="token operator">=</span> link<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>startIndex2 <span class="token operator">+</span> <span class="token punctuation">(</span><span class="token string">"<"</span> <span class="token operator">+</span> labelType<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> startIndex<span class="token punctuation">)</span><span class="token punctuation">;</span>
    			<span class="token punctuation">}</span>
    
    			<span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> arr <span class="token operator">=</span> <span class="token class-name">StrUtil</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span>str<span class="token punctuation">,</span> <span class="token string">"="</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    			<span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token keyword">null</span> <span class="token operator">!=</span> arr <span class="token operator">&&</span> arr<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    				<span class="token class-name">TreeMap</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">String</span><span class="token punctuation">,</span> <span class="token class-name">String</span><span class="token punctuation">></span></span> params <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">TreeMap</span><span class="token generics"><span class="token punctuation"><</span><span class="token punctuation">></span></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    
    				<span class="token keyword">for</span> <span class="token punctuation">(</span><span class="token class-name">String</span> s <span class="token operator">:</span> arr<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    					<span class="token keyword">if</span> <span class="token punctuation">(</span>s<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"="</span><span class="token punctuation">)</span> <span class="token operator">></span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    						<span class="token class-name">String</span> key <span class="token operator">=</span> s<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> s<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"="</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    						<span class="token class-name">String</span> value <span class="token operator">=</span> s<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span>s<span class="token punctuation">.</span><span class="token function">indexOf</span><span class="token punctuation">(</span><span class="token string">"="</span><span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    						<span class="token class-name">String</span> k <span class="token operator">=</span> key<span class="token punctuation">,</span> v <span class="token operator">=</span> value<span class="token punctuation">;</span>
    						<span class="token keyword">if</span> <span class="token punctuation">(</span>key<span class="token punctuation">.</span><span class="token function">startsWith</span><span class="token punctuation">(</span><span class="token string">"\'"</span><span class="token punctuation">)</span> <span class="token operator">||</span> key<span class="token punctuation">.</span><span class="token function">startsWith</span><span class="token punctuation">(</span><span class="token string">"\""</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    							k <span class="token operator">=</span> key<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> key<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    						<span class="token punctuation">}</span>
    
    						<span class="token keyword">if</span> <span class="token punctuation">(</span>value<span class="token punctuation">.</span><span class="token function">startsWith</span><span class="token punctuation">(</span><span class="token string">"\'"</span><span class="token punctuation">)</span> <span class="token operator">||</span> value<span class="token punctuation">.</span><span class="token function">startsWith</span><span class="token punctuation">(</span><span class="token string">"\""</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    							v <span class="token operator">=</span> value<span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">,</span> value<span class="token punctuation">.</span><span class="token function">length</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">trim</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    						<span class="token punctuation">}</span>
    						params<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span>k<span class="token punctuation">,</span> v<span class="token punctuation">)</span><span class="token punctuation">;</span>
    					<span class="token punctuation">}</span>
    				<span class="token punctuation">}</span>
    				node<span class="token punctuation">.</span><span class="token function">setParams</span><span class="token punctuation">(</span>params<span class="token punctuation">)</span><span class="token punctuation">;</span>
    			<span class="token punctuation">}</span>
    
    			list<span class="token punctuation">.</span><span class="token function">add</span><span class="token punctuation">(</span>node<span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token punctuation">}</span>
    
    		<span class="token keyword">return</span> list<span class="token punctuation">;</span>
    	<span class="token punctuation">}</span>
    
    <span class="token punctuation">}</span>
    <div class="hljs-button signin" data-title="登录后复制" data-report-click="{"spm":"1001.2101.3001.4334"}"></div></code><div class="hide-preCode-box"><span class="hide-preCode-bt" data-report-view="{"spm":"1001.2101.3001.7365"}"><img class="look-more-preCode contentImg-no-view" src="https://1000bd.com/contentImg/2022/06/27/191644837.png" alt="" title=""></span></div><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li><li style="color: rgb(153, 153, 153);">24</li><li style="color: rgb(153, 153, 153);">25</li><li style="color: rgb(153, 153, 153);">26</li><li style="color: rgb(153, 153, 153);">27</li><li style="color: rgb(153, 153, 153);">28</li><li style="color: rgb(153, 153, 153);">29</li><li style="color: rgb(153, 153, 153);">30</li><li style="color: rgb(153, 153, 153);">31</li><li style="color: rgb(153, 153, 153);">32</li><li style="color: rgb(153, 153, 153);">33</li><li style="color: rgb(153, 153, 153);">34</li><li style="color: rgb(153, 153, 153);">35</li><li style="color: rgb(153, 153, 153);">36</li><li style="color: rgb(153, 153, 153);">37</li><li style="color: rgb(153, 153, 153);">38</li><li style="color: rgb(153, 153, 153);">39</li><li style="color: rgb(153, 153, 153);">40</li><li style="color: rgb(153, 153, 153);">41</li><li style="color: rgb(153, 153, 153);">42</li><li style="color: rgb(153, 153, 153);">43</li><li style="color: rgb(153, 153, 153);">44</li><li style="color: rgb(153, 153, 153);">45</li><li style="color: rgb(153, 153, 153);">46</li><li style="color: rgb(153, 153, 153);">47</li><li style="color: rgb(153, 153, 153);">48</li><li style="color: rgb(153, 153, 153);">49</li><li style="color: rgb(153, 153, 153);">50</li><li style="color: rgb(153, 153, 153);">51</li><li style="color: rgb(153, 153, 153);">52</li><li style="color: rgb(153, 153, 153);">53</li><li style="color: rgb(153, 153, 153);">54</li><li style="color: rgb(153, 153, 153);">55</li><li style="color: rgb(153, 153, 153);">56</li><li style="color: rgb(153, 153, 153);">57</li><li style="color: rgb(153, 153, 153);">58</li><li style="color: rgb(153, 153, 153);">59</li><li style="color: rgb(153, 153, 153);">60</li><li style="color: rgb(153, 153, 153);">61</li><li style="color: rgb(153, 153, 153);">62</li><li style="color: rgb(153, 153, 153);">63</li><li style="color: rgb(153, 153, 153);">64</li><li style="color: rgb(153, 153, 153);">65</li><li style="color: rgb(153, 153, 153);">66</li><li style="color: rgb(153, 153, 153);">67</li><li style="color: rgb(153, 153, 153);">68</li><li style="color: rgb(153, 153, 153);">69</li><li style="color: rgb(153, 153, 153);">70</li><li style="color: rgb(153, 153, 153);">71</li><li style="color: rgb(153, 153, 153);">72</li><li style="color: rgb(153, 153, 153);">73</li><li style="color: rgb(153, 153, 153);">74</li><li style="color: rgb(153, 153, 153);">75</li><li style="color: rgb(153, 153, 153);">76</li><li style="color: rgb(153, 153, 153);">77</li><li style="color: rgb(153, 153, 153);">78</li><li style="color: rgb(153, 153, 153);">79</li><li style="color: rgb(153, 153, 153);">80</li><li style="color: rgb(153, 153, 153);">81</li><li style="color: rgb(153, 153, 153);">82</li><li style="color: rgb(153, 153, 153);">83</li><li style="color: rgb(153, 153, 153);">84</li><li style="color: rgb(153, 153, 153);">85</li><li style="color: rgb(153, 153, 153);">86</li><li style="color: rgb(153, 153, 153);">87</li><li style="color: rgb(153, 153, 153);">88</li><li style="color: rgb(153, 153, 153);">89</li><li style="color: rgb(153, 153, 153);">90</li><li style="color: rgb(153, 153, 153);">91</li><li style="color: rgb(153, 153, 153);">92</li><li style="color: rgb(153, 153, 153);">93</li><li style="color: rgb(153, 153, 153);">94</li><li style="color: rgb(153, 153, 153);">95</li><li style="color: rgb(153, 153, 153);">96</li><li style="color: rgb(153, 153, 153);">97</li><li style="color: rgb(153, 153, 153);">98</li><li style="color: rgb(153, 153, 153);">99</li><li style="color: rgb(153, 153, 153);">100</li><li style="color: rgb(153, 153, 153);">101</li><li style="color: rgb(153, 153, 153);">102</li><li style="color: rgb(153, 153, 153);">103</li><li style="color: rgb(153, 153, 153);">104</li><li style="color: rgb(153, 153, 153);">105</li><li style="color: rgb(153, 153, 153);">106</li><li style="color: rgb(153, 153, 153);">107</li><li style="color: rgb(153, 153, 153);">108</li><li style="color: rgb(153, 153, 153);">109</li><li style="color: rgb(153, 153, 153);">110</li><li style="color: rgb(153, 153, 153);">111</li><li style="color: rgb(153, 153, 153);">112</li><li style="color: rgb(153, 153, 153);">113</li><li style="color: rgb(153, 153, 153);">114</li><li style="color: rgb(153, 153, 153);">115</li><li style="color: rgb(153, 153, 153);">116</li><li style="color: rgb(153, 153, 153);">117</li><li style="color: rgb(153, 153, 153);">118</li><li style="color: rgb(153, 153, 153);">119</li><li style="color: rgb(153, 153, 153);">120</li><li style="color: rgb(153, 153, 153);">121</li><li style="color: rgb(153, 153, 153);">122</li><li style="color: rgb(153, 153, 153);">123</li><li style="color: rgb(153, 153, 153);">124</li><li style="color: rgb(153, 153, 153);">125</li><li style="color: rgb(153, 153, 153);">126</li><li style="color: rgb(153, 153, 153);">127</li><li style="color: rgb(153, 153, 153);">128</li><li style="color: rgb(153, 153, 153);">129</li><li style="color: rgb(153, 153, 153);">130</li></ul></pre> 
    <p>(4)测试</p> 
    <pre data-index="5" class="set-code-hide prettyprint"><code class="prism language-java has-numbering" onclick="mdcp.signin(event)" style="position: unset;"><span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token class-name">String</span><span class="token punctuation">[</span><span class="token punctuation">]</span> args<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
    		<span class="token class-name">String</span> str <span class="token operator">=</span> <span class="token string">"<div class=\"related-tags\">\n"</span> <span class="token operator">+</span> <span class="token string">"    <span>相关主题推荐:</span>\n"</span>
    				<span class="token operator">+</span> <span class="token string">"      a<a href=\'http://www.csdn.net/tag/标签\' target=\"_blank\">标签</a>\n"</span>
    				<span class="token operator">+</span> <span class="token string">"      <a href=\"http://www.csdn.net/tag/java\" target=\"_blank\">java</a>\n"</span>
    				<span class="token operator">+</span> <span class="token string">"      <a href=\"http://www.csdn.net/tag/团购\" target=\"_blank\">团购</a>\n"</span>
    				<span class="token operator">+</span> <span class="token string">"      <a href=\"http://www.csdn.net/tag/体育\" target=\"_blank\">体育</a>\n"</span>
    				<span class="token operator">+</span> <span class="token string">"      <a href=\"http://www.csdn.net/tag/搜狐\" icon='a' target=\"_blank\">搜狐</a>\n"</span>
    				<span class="token operator">+</span> <span class="token string">"<img src=\"/i/eg_tulip2.jpg\"  alt=\"上海鲜花港 - 郁金香\"><img src=\"/i/eg_tulip.jpg\"  alt=\"上海鲜花港 - 郁金香\" />  </div>"</span><span class="token punctuation">;</span>
    		
    		
    		<span class="token class-name">List</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">String</span><span class="token punctuation">></span></span> list <span class="token operator">=</span> <span class="token class-name">WebpageUtil</span><span class="token punctuation">.</span><span class="token function">getNode</span><span class="token punctuation">(</span>str<span class="token punctuation">,</span> <span class="token string">"a"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"-------a标签原内容------"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		list<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span>c <span class="token operator">-></span> <span class="token punctuation">{<!-- --></span>
    			<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>c<span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token class-name">List</span><span class="token generics"><span class="token punctuation"><</span><span class="token class-name">WebNode</span><span class="token punctuation">></span></span> list2 <span class="token operator">=</span> <span class="token class-name">WebpageUtil</span><span class="token punctuation">.</span><span class="token function">getNode2</span><span class="token punctuation">(</span>str<span class="token punctuation">,</span> <span class="token string">"a"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"-------解析后的数据------"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		list2<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span>c <span class="token operator">-></span> <span class="token punctuation">{<!-- --></span>
    			<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"内容:"</span><span class="token operator">+</span>c<span class="token punctuation">.</span><span class="token function">getContent</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    			<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"标签类型:"</span><span class="token operator">+</span>c<span class="token punctuation">.</span><span class="token function">getLabelType</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    			<span class="token class-name">System</span><span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"标签的参数:"</span><span class="token operator">+</span>c<span class="token punctuation">.</span><span class="token function">getParams</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    		<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token punctuation">}</span>
    <div class="hljs-button signin" data-title="登录后复制" data-report-click="{"spm":"1001.2101.3001.4334"}"></div></code><div class="hide-preCode-box"><span class="hide-preCode-bt" data-report-view="{"spm":"1001.2101.3001.7365"}"><img class="look-more-preCode contentImg-no-view" src="https://1000bd.com/contentImg/2022/06/27/191644837.png" alt="" title=""></span></div><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li><li style="color: rgb(153, 153, 153);">18</li><li style="color: rgb(153, 153, 153);">19</li><li style="color: rgb(153, 153, 153);">20</li><li style="color: rgb(153, 153, 153);">21</li><li style="color: rgb(153, 153, 153);">22</li><li style="color: rgb(153, 153, 153);">23</li></ul></pre> 
    <p>执行后输出,可以看到网页div里的a标签信息被解析出来。<br> <img src="https://1000bd.com/contentImg/2022/08/01/205325286.png" alt="在这里插入图片描述"></p>
                    </div>
                        </div>
                    </li>
    
                    <li class="list-group-item ul-li">
    
                        <b>相关阅读:</b><br>
                        <nobr>
    <a href="/Article/Index/928713">QSS属性大全</a>                            <br />
    <a href="/Article/Index/1278938">VBA实现Word表格排序</a>                            <br />
    <a href="/Article/Index/843401">php利用微信公众号发送模板消息</a>                            <br />
    <a href="/Article/Index/713355">Java的线程实现</a>                            <br />
    <a href="/Article/Index/736944">Rust 从入门到精通01-简介</a>                            <br />
    <a href="/Article/Index/1131124">【EasyExcel】第二篇:导出excel文件,导出多个sheet工作空间</a>                            <br />
    <a href="/Article/Index/1388861">瞬态抑制二极管TVS的工作原理?|深圳比创达电子EMC(上)</a>                            <br />
    <a href="/Article/Index/1136138">Latex IEEE模板导入中文问题</a>                            <br />
    <a href="/Article/Index/852469">tensorflow2.x:构建tf.keras.Model实例的几种方式</a>                            <br />
    <a href="/Article/Index/1452228">目标检测YOLO实战应用案例100讲-基于改进YOLO v5的排水管网缺陷智能识别(续)</a>                            <br />
                        </nobr>
                    </li>
                    <li class="list-group-item from-a mb-2">
                        原文地址:https://blog.csdn.net/u011628753/article/details/126061264
                    </li>
    
                </ul>
            </div>
    
            <div class="col-lg-4 col-sm-12">
                <ul class="list-group" style="word-break:break-all;">
                    <li class="list-group-item ul-li-bg" aria-current="true">
                        最新文章
                    </li>
                    <li class="list-group-item ul-li">
                        <nobr>
    <a href="/Article/Index/1484446">攻防演习之三天拿下官网站群</a>                            <br />
    <a href="/Article/Index/1515268">数据安全治理学习——前期安全规划和安全管理体系建设</a>                            <br />
    <a href="/Article/Index/1759065">企业安全 | 企业内一次钓鱼演练准备过程</a>                            <br />
    <a href="/Article/Index/1485036">内网渗透测试 | Kerberos协议及其部分攻击手法</a>                            <br />
    <a href="/Article/Index/1877332">0day的产生 | 不懂代码的"代码审计"</a>                            <br />
    <a href="/Article/Index/1887576">安装scrcpy-client模块av模块异常,环境问题解决方案</a>                            <br />
    <a href="/Article/Index/1887578">leetcode hot100【LeetCode 279. 完全平方数】java实现</a>                            <br />
    <a href="/Article/Index/1887512">OpenWrt下安装Mosquitto</a>                            <br />
    <a href="/Article/Index/1887520">AnatoMask论文汇总</a>                            <br />
    <a href="/Article/Index/1887496">【AI日记】24.11.01 LangChain、openai api和github copilot</a>                            <br />
                        </nobr>
                    </li>
                </ul>
    
                <ul class="list-group pt-2" style="word-break:break-all;">
                    <li class="list-group-item ul-li-bg" aria-current="true">
                        热门文章
                    </li>
                    <li class="list-group-item ul-li">
                        <nobr>
    <a href="/Article/Index/888177">十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!</a>                            <br />
    <a href="/Article/Index/797680">奉劝各位学弟学妹们,该打造你的技术影响力了!</a>                            <br />
    <a href="/Article/Index/888183">五年了,我在 CSDN 的两个一百万。</a>                            <br />
    <a href="/Article/Index/888179">Java俄罗斯方块,老程序员花了一个周末,连接中学年代!</a>                            <br />
    <a href="/Article/Index/797730">面试官都震惊,你这网络基础可以啊!</a>                            <br />
    <a href="/Article/Index/797725">你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法</a>                            <br />
    <a href="/Article/Index/797702">心情不好的时候,用 Python 画棵樱花树送给自己吧</a>                            <br />
    <a href="/Article/Index/797709">通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!</a>                            <br />
    <a href="/Article/Index/797716">13 万字 C 语言从入门到精通保姆级教程2021 年版</a>                            <br />
    <a href="/Article/Index/888192">10行代码集2000张美女图,Python爬虫120例,再上征途</a>                            <br />
                        </nobr>
                    </li>
                </ul>
    
            </div>
        </div>
    </div>
    <!-- 主体 -->
    
    
        <!--body结束-->
        <!--这里是footer模板-->
        
        <!--footer-->
    <nav class="navbar navbar-inverse navbar-fixed-bottom">
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <div class="text-muted center foot-height">
                        Copyright © 2022 侵权请联系<a href="mailto:2656653265@qq.com">2656653265@qq.com</a>   
                        <a href="https://beian.miit.gov.cn/" target="_blank">京ICP备2022015340号-1</a>
                    </div>
                    <div style="width:300px;margin:0 auto; padding:0px 5px;">
                        <a href="/regex.html">正则表达式工具</a>
                        <a href="/cron.html">cron表达式工具</a>
                        <a href="/pwdcreator.html">密码生成工具</a>
                    </div>
                    <div style="width:300px;margin:0 auto; padding:5px 0;">
                        <a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010502049817" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;">
                        <img src="" style="float:left;" /><p style="float:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:#939393;">京公网安备 11010502049817号</p></a>
                    </div>
                </div>
            </div>
        </div>
      
    </nav>
    <!--footer-->
    
        <!--footer模板结束-->
    
        <script src="/js/plugins/jquery/jquery.js"></script>
        <script src="/js/bootstrap.min.js"></script>
    
        <!--这里是scripts模板-->
        
    
        
     
    
    
        <!--scripts模板结束-->
    
    </body>
    </html>