又到一年的年终了(2014年只剩下最后一个月了),我相信很多园友又在酝酿明年年初换工作的计划了,或许因为年终奖、薪水、工作环境等等诸多原因又将选择跳槽了,這个计划当然也包括我自己,准备明年过完年后跳槽(希望能有个好运气,找个比现在好一点的工作)。换工作避免不了接触最多的还是招聘网站(现在公司招人基本上都是在招聘网上发布招聘信息),现在招聘网站乱七八糟,五花八门,不计其数,个人觉得比较出名的还是前程无忧、智联招聘、猎聘网等等网站,个人求职最关注也是这三个网站。以个人经验而言,如果运气好的话可能半个月的时间就能找到新工作,如果运气不好的可能就是三头几个月都有可能,我身边就有朋友找了半年的。为了有更多的面试机会可能会来回在这几个网站上转,每天都会在这几个网站上转啊转,花费的时间非常多,可能有很多公司都会在这三个网站发布招聘信息,所以就会浏览很多重复公司的信息,或者投递简历时出现重复投递这些公司。现个人利用一点点空余的时间,开发了一个小应用程序,這个程序的作用就是输入一些查询条件(工作地点、薪资范围、关键词等等信息)将这三个网站的所有的关于查询条件的招聘信息全部找出来,这样的避免了来回三个网站跑,浪费时间和精力,最后可能得到的效果还不理想,所以个人就准备做這一款利器来解决這个问题。当你看到表格中显示的信息个人比较感兴趣的话可以双击选中行就可以直接跳转到相应网站,这样就可以非常高效性的投递简历了,不知這个想法会不会得到园友的认同。下面就实现逻辑介绍给大家,望大家多支持和关注。
找工作神器的主要原理是,根据查询条件去访问相应的网站,通过程序拿到相应网站的HTML代码,再通过相应的正则表达式取相应的信息,再去截取相应的重要信息,再将相应的信息显示在表格里。這里有使用到线程池异步的方式,同时会去三个网站抓取数据,并且会抓取一条解析一条就会在表格里显示出来,这样就避免等待太长时间还看不到结果的尴尬,程序发布后各位园友可以下载程序看看效果如何,还请您能提出宝贵的意见。
整个程序显示的界面效果图:
图片上面显示的是查询条件,输入查询条件后点击查询,下面显示的查询出的数据,分别有三个页签(猎聘网、智联招聘和前程无忧),表格分别显示职位名称、公司名称、公司性质、公司规模、月薪/年薪、工作地点、工作经验、最低学历和发布时间等等信息,日后根据需要还可以继续扩充想要看到的信息,实现看到信息的基本上跟网站上的信息差不多。
查询条件
解析:现在输入的条件有工作地点、薪水范围(上限、下限),关键词、必须包含的关键词,现在暂时只支持以上几种条件,日后可能会继续加入更多的的查询条件(公司名称、公司性质、工作经验、学历要求等等条件,日后再扩展),使查询更方便。
启动查询的代码如下:
通过启动线程池异步的方式同时启动三个网站数据的加载,这样增强用户体验的效果,并且会拿到一条数据解析一条数据,并且及时显示在表格了,这样用户不需要等待太长的时间而看不到结果。
程序启动首先会加载城市对应的ID的一个字典,数据加载如下:
class="code_img_closed" src="/Upload/Images/2014113021/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('06bf6e3c-0986-42b2-ab11-bb8ec15d6c50',event)" src="/Upload/Images/2014113021/2B1B950FA3DF188F.gif" alt="" />1 <?xml version="1.0"?> 2 <SerializableDictionaryOfStringString> 3 <SerializableDictionary> 4 <key> 5 <string>010</string> 6 </key> 7 <value> 8 <string>北京</string> 9 </value> 10 </SerializableDictionary> 11 <SerializableDictionary> 12 <key> 13 <string>020</string> 14 </key> 15 <value> 16 <string>上海</string> 17 </value> 18 </SerializableDictionary> 19 <SerializableDictionary> 20 <key> 21 <string>030</string> 22 </key> 23 <value> 24 <string>天津</string> 25 </value> 26 </SerializableDictionary> 27 <SerializableDictionary> 28 <key> 29 <string>040</string> 30 </key> 31 <value> 32 <string>重庆</string> 33 </value> 34 </SerializableDictionary> 35 <SerializableDictionary> 36 <key> 37 <string>050020</string> 38 </key> 39 <value> 40 <string>广州</string> 41 </value> 42 </SerializableDictionary> 43 <SerializableDictionary> 44 <key> 45 <string>050090</string> 46 </key> 47 <value> 48 <string>深圳</string> 49 </value> 50 </SerializableDictionary> 51 <SerializableDictionary> 52 <key> 53 <string>050030</string> 54 </key> 55 <value> 56 <string>潮州</string> 57 </value> 58 </SerializableDictionary> 59 <SerializableDictionary> 60 <key> 61 <string>050040</string> 62 </key> 63 <value> 64 <string>东莞</string> 65 </value> 66 </SerializableDictionary> 67 <SerializableDictionary> 68 <key> 69 <string>050050</string> 70 </key> 71 <value> 72 <string>佛山</string> 73 </value> 74 </SerializableDictionary> 75 <SerializableDictionary> 76 <key> 77 <string>050060</string> 78 </key> 79 <value> 80 <string>惠州</string> 81 </value> 82 </SerializableDictionary> 83 <SerializableDictionary> 84 <key> 85 <string>050070</string> 86 </key> 87 <value> 88 <string>清远</string> 89 </value> 90 </SerializableDictionary> 91 <SerializableDictionary> 92 <key> 93 <string>050080</string> 94 </key> 95 <value> 96 <string>汕头</string> 97 </value> 98 </SerializableDictionary> 99 <SerializableDictionary> 100 <key> 101 <string>050100</string> 102 </key> 103 <value> 104 <string>顺德</string> 105 </value> 106 </SerializableDictionary> 107 <SerializableDictionary> 108 <key> 109 <string>050110</string> 110 </key> 111 <value> 112 <string>湛江</string> 113 </value> 114 </SerializableDictionary> 115 <SerializableDictionary> 116 <key> 117 <string>050120</string> 118 </key> 119 <value> 120 <string>肇庆</string> 121 </value> 122 </SerializableDictionary> 123 <SerializableDictionary> 124 <key> 125 <string>050130</string> 126 </key> 127 <value> 128 <string>中山</string> 129 </value> 130 </SerializableDictionary> 131 <SerializableDictionary> 132 <key> 133 <string>050140</string> 134 </key> 135 <value> 136 <string>珠海</string> 137 </value> 138 </SerializableDictionary> 139 <SerializableDictionary> 140 <key> 141 <string>050150</string> 142 </key> 143 <value> 144 <string>江门</string> 145 </value> 146 </SerializableDictionary> 147 <SerializableDictionary> 148 <key> 149 <string>050160</string> 150 </key> 151 <value> 152 <string>阳江</string> 153 </value> 154 </SerializableDictionary> 155 <SerializableDictionary> 156 <key> 157 <string>050170</string> 158 </key> 159 <value> 160 <string>韶关</string> 161 </value> 162 </SerializableDictionary> 163 <SerializableDictionary> 164 <key> 165 <string>050180</string> 166 </key> 167 <value> 168 <string>茂名</string> 169 </value> 170 </SerializableDictionary> 171 <SerializableDictionary> 172 <key> 173 <string>050190</string> 174 </key> 175 <value> 176 <string>梅州</string> 177 </value> 178 </SerializableDictionary> 179 <SerializableDictionary> 180 <key> 181 <string>050200</string> 182 </key> 183 <value> 184 <string>汕尾</string> 185 </value> 186 </SerializableDictionary> 187 <SerializableDictionary> 188 <key> 189 <string>050210</string> 190 </key> 191 <value> 192 <string>河源</string> 193 </value> 194 </SerializableDictionary> 195 <SerializableDictionary> 196 <key> 197 <string>050220</string> 198 </key> 199 <value> 200 <string>揭阳</string> 201 </value> 202 </SerializableDictionary> 203 <SerializableDictionary> 204 <key> 205 <string>050230</string> 206 </key> 207 <value> 208 <string>云浮</string> 209 </value> 210 </SerializableDictionary> 211 <SerializableDictionary> 212 <key> 213 <string>050240</string> 214 </key> 215 <value> 216 <string>开平</string> 217 </value> 218 </SerializableDictionary> 219 <SerializableDictionary> 220 <key> 221 <string>050250</string> 222 </key> 223 <value> 224 <string>台山</string> 225 </value> 226 </SerializableDictionary> 227 <SerializableDictionary> 228 <key> 229 <string>050260</string> 230 </key> 231 <value> 232 <string>普宁</string> 233 </value> 234 </SerializableDictionary> 235 <SerializableDictionary> 236 <key> 237 <string>050270</string> 238 </key> 239 <value> 240 <string>南沙开发区</string> 241 </value> 242 </SerializableDictionary> 243 <SerializableDictionary> 244 <key> 245 <string>050280</string> 246 </key> 247 <value> 248 <string>龙川</string> 249 </value> 250 </SerializableDictionary> 251 <SerializableDictionary> 252 <key> 253 <string>050290</string> 254 </key> 255 <value> 256 <string>鹤山</string> 257 </value> 258 </SerializableDictionary> 259 <SerializableDictionary> 260 <key> 261 <string>060020</string> 262 </key> 263 <value> 264 <string>南京</string> 265 </value> 266 </SerializableDictionary> 267 <SerializableDictionary> 268 <key> 269 <string>060030</string> 270 </key> 271 <value> 272 <string>常熟</string> 273 </value> 274 </SerializableDictionary> 275 <SerializableDictionary> 276 <key> 277 <string>060040</string> 278 </key> 279 <value> 280 <string>常州</string> 281 </value> 282 </SerializableDictionary> 283 <SerializableDictionary> 284 <key> 285 <string>060050</string> 286 </key> 287 <value> 288 <string>昆山</string> 289 </value> 290 </SerializableDictionary> 291 <SerializableDictionary> 292 <key> 293 <string>060060</string> 294 </key> 295 <value> 296 <string>连云港</string> 297 </value> 298 </SerializableDictionary> 299 <SerializableDictionary> 300 <key> 301 <string>060070</string> 302 </key> 303 <value> 304 <string>南通</string> 305 </value> 306 </SerializableDictionary> 307 <SerializableDictionary> 308 <key> 309 <string>060080</string> 310 </key> 311 <value> 312 <string>苏州</string> 313 </value> 314 </SerializableDictionary> 315 <SerializableDictionary> 316 <key> 317 <string>060090</string> 318 </key> 319 <value> 320 <string>太仓</string> 321 </value> 322 </SerializableDictionary> 323 <SerializableDictionary> 324 <key> 325 <string>060100</string> 326 </key> 327 <value> 328 <string>无锡</string> 329 </value> 330 </SerializableDictionary> 331 <SerializableDictionary> 332 <key> 333 <string>060110</string> 334 </key> 335 <value> 336 <string>徐州</string> 337 </value> 338 </SerializableDictionary> 339 <SerializableDictionary> 340 <key> 341 <string>060120</string> 342 </key> 343 <value> 344 <string>扬州</string> 345 </value> 346 </SerializableDictionary> 347 <SerializableDictionary> 348 <key> 349 <string>060130</string> 350 </key> 351 <value> 352 <string>镇江</string> 353 </value> 354 </SerializableDictionary> 355 <SerializableDictionary> 356 <key> 357 <string>060140</string> 358 </key> 359 <value> 360 <string>淮安</string> 361 </value> 362 </SerializableDictionary> 363 <SerializableDictionary> 364 <key> 365 <string>060150</string> 366 </key> 367 <value> 368 <string>盐城</string> 369 </value> 370 </SerializableDictionary> 371 <SerializableDictionary> 372 <key> 373 <string>060160</string> 374 </key> 375 <value> 376 <string>泰州</string> 377 </value> 378 </SerializableDictionary> 379 <SerializableDictionary> 380 <key> 381 <string>060170</string> 382 </key> 383 <value> 384 <string>宿迁</string> 385 </value> 386 </SerializableDictionary> 387 <SerializableDictionary> 388 <key> 389 <string>060180</string> 390 </key> 391 <value> 392 <string>张家港</string> 393 </value> 394 </SerializableDictionary> 395 <SerializableDictionary> 396 <key> 397 <string>060190</string> 398 </key> 399 <value> 400 <string>江阴</string> 401 </value> 402 </SerializableDictionary> 403 <SerializableDictionary> 404 <key> 405 <string>060200</string> 406 </key> 407 <value> 408 <string>丹阳</string> 409 </value> 410 </SerializableDictionary> 411 <SerializableDictionary> 412 <key> 413 <string>060210</string> 414 </key> 415 <value> 416 <string>溧阳</string> 417 </value> 418 </SerializableDictionary> 419 <SerializableDictionary> 420 <key> 421 <string>060220</string> 422 </key> 423 <value> 424 <string>泰兴</string> 425 </value> 426 </SerializableDictionary> 427 <SerializableDictionary> 428 <key> 429 <string>060230</string> 430 </key> 431 <value> 432 <string>宜兴</string> 433 </value> 434 </SerializableDictionary> 435 <SerializableDictionary> 436 <key> 437 <string>060240</string> 438 </key> 439 <value> 440 <string>靖江</string> 441 </value> 442 </SerializableDictionary> 443 <SerializableDictionary> 444 <key> 445 <string>060250</string> 446 </key> 447 <value> 448 <string>句容</string> 449 </value> 450 </SerializableDictionary> 451 <SerializableDictionary> 452 <key> 453 <string>060260</string> 454 </key> 455 <value> 456 <string>如皋</string> 457 </value> 458 </SerializableDictionary> 459 <SerializableDictionary> 460 <key> 461 <string>060270</string> 462 </key> 463 <value> 464 <string>扬中</string> 465 </value> 466 </SerializableDictionary> 467 <SerializableDictionary> 468 <key> 469 <string>060280</string> 470 </key> 471 <value> 472 <string>高邮</string> 473 </value> 474 </SerializableDictionary> 475 <SerializableDictionary> 476 <key> 477 <string>060290</string> 478 </key> 479 <value> 480 <string>启东</string> 481 </value> 482 </SerializableDictionary> 483 <SerializableDictionary> 484 <key> 485 <string>060300</string> 486 </key> 487 <value> 488 <string>盱眙</string> 489 </value> 490 </SerializableDictionary> 491 <SerializableDictionary> 492 <key> 493 <string>060310</string> 494 </key> 495 <value> 496 <string>通州</string> 497 </value> 498 </SerializableDictionary> 499 <SerializableDictionary> 500 <key> 501 <string>060320</string> 502 </key> 503 <value> 504 <string>金湖</string> 505 </value> 506 </SerializableDictionary> 507 <SerializableDictionary> 508 <key> 509 <string>070020</string> 510 </key> 511 <value> 512 <string>杭州</string> 513 </value> 514 </SerializableDictionary> 515 <SerializableDictionary> 516 <key> 517 <string>070030</string> 518 </key> 519 <value> 520 <string>宁波</string> 521 </value> 522 </SerializableDictionary> 523 <SerializableDictionary> 524 <key> 525 <string>070040</string> 526 </key> 527 <value> 528 <string>温州</string> 529 </value> 530 </SerializableDictionary> 531 <SerializableDictionary> 532 <key> 533 <string>070050</string> 534 </key> 535 <value> 536 <string>绍兴</string> 537 </value> 538 </SerializableDictionary> 539 <SerializableDictionary> 540 <key> 541 <string>070060</string> 542 </key> 543 <value> 544 <string>金华</string> 545 </value> 546 </SerializableDictionary> 547 <SerializableDictionary> 548 <key> 549 <string>070070</string> 550 </key> 551 <value> 552 <string>台州</string> 553 </value> 554 </SerializableDictionary> 555 <SerializableDictionary> 556 <key> 557 <string>070080</string> 558 </key> 559 <value> 560 <string>湖州</string> 561 </value> 562 </SerializableDictionary> 563 <SerializableDictionary> 564 <key> 565 <string>070090</string> 566 </key> 567 <value> 568 <string>嘉兴</string> 569 </value> 570 </SerializableDictionary> 571 <SerializableDictionary> 572 <key> 573 <string>070100</string> 574 </key> 575 <value> 576 <string>衢州</string> 577 </value> 578 </SerializableDictionary> 579 <SerializableDictionary> 580 <key> 581 <string>070110</string> 582 </key> 583 <value> 584 <string>丽水</string> 585 </value> 586 </SerializableDictionary> 587 <SerializableDictionary> 588 <key> 589 <string>070120</string> 590 </key> 591 <value> 592 <string>舟山</string> 593 </value> 594 </SerializableDictionary> 595 <SerializableDictionary> 596 <key> 597 <string>070130</string> 598 </key> 599 <value> 600 <string>义乌</string> 601 </value> 602 </SerializableDictionary> 603 <SerializableDictionary> 604 <key> 605 <string>070140</string> 606 </key> 607 <value> 608 <string>海宁</string> 609 </value> 610 </SerializableDictionary> 611 <SerializableDictionary> 612 <key> 613 <string>070150</string> 614 </key> 615 <value> 616 <string>玉环县</string> 617 </value> 618 </SerializableDictionary> 619 <SerializableDictionary> 620 <key> 621 <string>070160</string> 622 </key> 623 <value> 624 <string>平湖</string> 625 </value> 626 </SerializableDictionary> 627 <SerializableDictionary> 628 <key> 629 <string>070170</string> 630 </key> 631 <value> 632 <string>永康</string> 633 </value> 634 </SerializableDictionary> 635 <SerializableDictionary> 636 <key> 637 <string>070180</string> 638 </key> 639 <value> 640 <string>东阳</string> 641 </value> 642 </SerializableDictionary> 643 <SerializableDictionary> 644 <key> 645 <string>070190</string> 646 </key> 647 <value> 648 <string>嘉善</string> 649 </value> 650 </SerializableDictionary> 651 <SerializableDictionary> 652 <key> 653 <string>070200</string> 654 </key> 655 <value> 656 <string>余姚</string> 657 </value> 658 </SerializableDictionary> 659 <SerializableDictionary> 660 <key> 661 <string>070210</string> 662 </key> 663 <value> 664 <string>慈溪</string> 665 </value> 666 </SerializableDictionary> 667 <SerializableDictionary> 668 <key> 669 <string>070220</string> 670 </key> 671 <value> 672 <string>乐清</string> 673 </value> 674 </SerializableDictionary> 675 <SerializableDictionary> 676 <key> 677 <string>070230</string> 678 </key> 679 <value> 680 <string>永嘉</string> 681 </value> 682 </SerializableDictionary> 683 <SerializableDictionary> 684 <key> 685 <string>070240</string> 686 </key> 687 <value> 688 <string>桐乡</string> 689 </value> 690 </SerializableDictionary> 691 <SerializableDictionary> 692 <key> 693 <string>070250</string> 694 </key> 695 <value> 696 <string>瑞安</string> 697 </value> 698 </SerializableDictionary> 699 <SerializableDictionary> 700 <key> 701 <string>070260</string> 702 </key> 703 <value> 704 <string>温岭</string> 705 </value> 706 </SerializableDictionary> 707 <SerializableDictionary> 708 <key> 709 <string>070270</string> 710 </key> 711 <value> 712 <string>上虞</string> 713 </value> 714 </SerializableDictionary> 715 <SerializableDictionary> 716 <key> 717 <string>070280</string> 718 </key> 719 <value> 720 <string>诸暨</string> 721 </value> 722 </SerializableDictionary> 723 <SerializableDictionary> 724 <key> 725 <string>070290</string> 726 </key> 727 <value> 728 <string>宁海</string> 729 </value> 730 </SerializableDictionary> 731 <SerializableDictionary> 732 <key> 733 <string>070300</string> 734 </key> 735 <value> 736 <string>三门</string> 737 </value> 738 </SerializableDictionary> 739 <SerializableDictionary> 740 <key> 741 <string>070310</string> 742 </key> 743 <value> 744 <string>德清</string> 745 </value> 746 </SerializableDictionary> 747 <SerializableDictionary> 748 <key> 749 <string>070320</string> 750 </key> 751 <value> 752 <string>象山</string> 753 </value> 754 </SerializableDictionary> 755 <SerializableDictionary> 756 <key> 757 <string>070330</string> 758 </key> 759 <value> 760 <string>方家山</string> 761 </value> 762 </SerializableDictionary> 763 <SerializableDictionary> 764 <key> 765 <string>070340</string> 766 </key> 767 <value> 768 <string>龙泉</string> 769 </value> 770 </SerializableDictionary> 771 <SerializableDictionary> 772 <key> 773 <string>080020</string> 774 </key> 775 <value> 776 <string>合肥</string> 777 </value> 778 </SerializableDictionary> 779 <SerializableDictionary> 780 <key> 781 <string>080030</string> 782 </key> 783 <value> 784 <string>安庆</string> 785 </value> 786 </SerializableDictionary> 787 <SerializableDictionary> 788 <key> 789 <string>080040</string> 790 </key> 791 <value> 792 <string>蚌埠</string> 793 </value> 794 </SerializableDictionary> 795 <SerializableDictionary> 796 <key> 797 <string>080050</string> 798 </key> 799 <value> 800 <string>芜湖</string> 801 </value> 802 </SerializableDictionary> 803 <SerializableDictionary> 804 <key> 805 <string>080060</string> 806 </key> 807 <value> 808 <string>淮南</string> 809 </value> 810 </SerializableDictionary> 811 <SerializableDictionary> 812 <key> 813 <string>080070</string> 814 </key> 815 <value> 816 <string>马鞍山</string> 817 </value> 818 </SerializableDictionary> 819 <SerializableDictionary> 820 <key> 821 <string>080080</string> 822 </key> 823 <value> 824 <string>淮北</string> 825 </value> 826 </SerializableDictionary> 827 <SerializableDictionary> 828 <key> 829 <string>080090</string> 830 </key> 831 <value> 832 <string>铜陵</string> 833 </value> 834 </SerializableDictionary> 835 <SerializableDictionary> 836 <key> 837 <string>080100</string> 838 </key> 839 <value> 840 <string>黄山</string> 841 </value> 842 </SerializableDictionary> 843 <SerializableDictionary> 844 <key> 845 <string>080110</string> 846 </key> 847 <value> 848 <string>滁州</string> 849 </value> 850 </SerializableDictionary> 851 <SerializableDictionary> 852 <key> 853 <string>080120</string> 854 </key> 855 <value> 856 <string>阜阳</string> 857 </value> 858 </SerializableDictionary> 859 <SerializableDictionary> 860 <key> 861 <string>080130</string> 862 </key> 863 <value> 864 <string>宿州</string> 865 </value> 866 </SerializableDictionary> 867 <SerializableDictionary> 868 <key> 869 <string>080140</string> 870 </key> 871 <value> 872 <string>六安</string> 873 </value> 874 </SerializableDictionary> 875 <SerializableDictionary> 876 <key> 877 <string>080150</string> 878 </key> 879 <value> 880 <string>亳州</string> 881 </value> 882 </SerializableDictionary> 883 <SerializableDictionary> 884 <key> 885 <string>080160</string> 886 </key> 887 <value> 888 <string>池州</string> 889 </value> 890 </SerializableDictionary> 891 <SerializableDictionary> 892 <key> 893 <string>080170</string> 894 </key> 895 <value> 896 <string>宣城</string> 897 </value> 898 </SerializableDictionary> 899 <SerializableDictionary> 900 <key> 901 <string>080180</string> 902 </key> 903 <value> 904 <string>巢湖</string> 905 </value> 906 </SerializableDictionary> 907 <SerializableDictionary> 908 <key> 909 <string>080190</string> 910 </key> 911 <value> 912 <string>凤阳</string> 913 </value> 914 </SerializableDictionary> 915 <SerializableDictionary> 916 <key> 917 <string>080200</string> 918 </key> 919 <value> 920 <string>广德</string> 921 </value> 922 </SerializableDictionary> 923 <SerializableDictionary> 924 <key> 925 <string>080210</string> 926 </key> 927 <value> 928 <string>宿松</string> 929 </value> 930 </SerializableDictionary> 931 <SerializableDictionary> 932 <key> 933 <string>090020</string> 934 </key> 935 <value> 936 <string>福州</string> 937 </value> 938 </SerializableDictionary> 939 <SerializableDictionary> 940 <key> 941 <string>090030</string> 942 </key> 943 <value> 944 <string>泉州</string> 945 </value> 946 </SerializableDictionary> 947 <SerializableDictionary> 948 <key> 949 <string>090040</string> 950 </key> 951 <value> 952 <string>厦门</string> 953 </value> 954 </SerializableDictionary> 955 <SerializableDictionary> 956 <key> 957 <string>090050</string> 958 </key> 959 <value> 960 <string>漳州</string> 961 </value> 962 </SerializableDictionary> 963 <SerializableDictionary> 964 <key> 965 <string>090060</string> 966 </key> 967 <value> 968 <string>莆田</string> 969 </value> 970 </SerializableDictionary> 971 <SerializableDictionary> 972 <key> 973 <string>090070</string> 974 </key> 975 <value> 976 <string>三明</string> 977 </value> 978 </SerializableDictionary> 979 <SerializableDictionary> 980 <key> 981 <string>090080</string> 982 </key> 983 <value> 984 <string>南平</string> 985 </value> 986 </SerializableDictionary> 987 <SerializableDictionary> 988 <key> 989 <string>090090</string> 990 </key> 991 <value> 992 <string>龙岩</string> 993 </value> 994 </SerializableDictionary> 995 <SerializableDictionary> 996 <key> 997 <string>090100</string> 998 </key> 999 <value> 1000 <string>宁德</string> 1001 </value> 1002 </SerializableDictionary> 1003 <SerializableDictionary> 1004 <key> 1005 <string>090110</string> 1006 </key> 1007 <value> 1008 <string>泉港区</string> 1009 </value> 1010 </SerializableDictionary> 1011 <SerializableDictionary> 1012 <key> 1013 <string>090120</string> 1014 </key> 1015 <value> 1016 <string>福安</string> 1017 </value> 1018 </SerializableDictionary> 1019 <SerializableDictionary> 1020 <key> 1021 <string>090130</string> 1022 </key> 1023 <value> 1024 <string>晋江</string> 1025 </value> 1026 </SerializableDictionary> 1027 <SerializableDictionary> 1028 <key> 1029 <string>100020</string> 1030 </key> 1031 <value> 1032 <string>兰州</string> 1033 </value> 1034 </SerializableDictionary> 1035 <SerializableDictionary> 1036 <key> 1037 <string>100030</string> 1038 </key> 1039 <value> 1040 <string>嘉峪关</string> 1041 </value> 1042 </SerializableDictionary> 1043 <SerializableDictionary> 1044 <key> 1045 <string>100040</string> 1046 </key> 1047 <value> 1048 <string>酒泉</string> 1049 </value> 1050 </SerializableDictionary> 1051 <SerializableDictionary> 1052 <key> 1053 <string>100050</string> 1054 </key> 1055 <value> 1056 <string>金昌</string> 1057 </value> 1058 </SerializableDictionary> 1059 <SerializableDictionary> 1060 <key> 1061 <string>100060</string> 1062 </key> 1063 <value> 1064 <string>白银</string> 1065 </value> 1066 </SerializableDictionary> 1067 <SerializableDictionary> 1068 <key> 1069 <string>100070</string> 1070 </key> 1071 <value> 1072 <string>天水</string> 1073 </value> 1074 </SerializableDictionary> 1075 <SerializableDictionary> 1076 <key> 1077 <string>100080</string> 1078 </key> 1079 <value> 1080 <string>张掖</string> 1081 </value> 1082 </SerializableDictionary> 1083 <SerializableDictionary> 1084 <key> 1085 <string>100090</string> 1086 </key> 1087 <value> 1088 <string>武威</string> 1089 </value> 1090 </SerializableDictionary> 1091 <SerializableDictionary> 1092 <key> 1093 <string>100100</string> 1094 </key> 1095 <value> 1096 <string>定西</string> 1097 </value> 1098 </SerializableDictionary> 1099 <SerializableDictionary> 1100 <key> 1101 <string>100110</string> 1102 </key> 1103 <value> 1104 <string>陇南</string> 1105 </value> 1106 </SerializableDictionary> 1107 <SerializableDictionary> 1108 <key> 1109 <string>100120</string> 1110 </key> 1111 <value> 1112 <string>平凉</string> 1113 </value> 1114 </SerializableDictionary> 1115 <SerializableDictionary> 1116 <key> 1117 <string>100130</string> 1118 </key> 1119 <value> 1120 <string>庆阳</string> 1121 </value> 1122 </SerializableDictionary> 1123 <SerializableDictionary> 1124 <key> 1125 <string>100140</string> 1126 </key> 1127 <value> 1128 <string>临夏回族自治州</string> 1129 </value> 1130 </SerializableDictionary> 1131 <SerializableDictionary> 1132 <key> 1133 <string>100150</string> 1134 </key> 1135 <value> 1136 <string>甘南藏族自治州</string> 1137 </value> 1138 </SerializableDictionary> 1139 <SerializableDictionary> 1140 <key> 1141 <string>110020</string> 1142 </key> 1143 <value> 1144 <string>南宁</string> 1145 </value> 1146 </SerializableDictionary> 1147 <SerializableDictionary> 1148 <key> 1149 <string>110030</string> 1150 </key> 1151 <value> 1152 <string>北海</string> 1153 </value> 1154 </SerializableDictionary> 1155 <SerializableDictionary> 1156 <key> 1157 <string>110040</string> 1158 </key> 1159 <value> 1160 <string>桂林</string> 1161 </value> 1162 </SerializableDictionary> 1163 <SerializableDictionary> 1164 <key> 1165 <string>110050</string> 1166 </key> 1167 <value> 1168 <string>柳州</string> 1169 </value> 1170 </SerializableDictionary> 1171 <SerializableDictionary> 1172 <key> 1173 <string>110060</string> 1174 </key> 1175 <value> 1176 <string>玉林</string> 1177 </value> 1178 </SerializableDictionary> 1179 <SerializableDictionary> 1180 <key> 1181 <string>110070</string> 1182 </key> 1183 <value> 1184 <string>梧州</string> 1185 </value> 1186 </SerializableDictionary> 1187 <SerializableDictionary> 1188 <key> 1189 <string>110080</string> 1190 </key> 1191 <value> 1192 <string>崇左</string> 1193 </value> 1194 </SerializableDictionary> 1195 <SerializableDictionary> 1196 <key> 1197 <string>110090</string> 1198 </key> 1199 <value> 1200 <string>来宾</string> 1201 </value> 1202 </SerializableDictionary> 1203 <SerializableDictionary> 1204 <key> 1205 <string>110100</string> 1206 </key> 1207 <value> 1208 <string>防城港</string> 1209 </value> 1210 </SerializableDictionary> 1211 <SerializableDictionary> 1212 <key> 1213 <string>110110</string> 1214 </key> 1215 <value> 1216 <string>百色</string> 1217 </value> 1218 </SerializableDictionary> 1219 <SerializableDictionary> 1220 <key> 1221 <string>110120</string> 1222 </key> 1223 <value> 1224 <string>钦州</string> 1225 </value> 1226 </SerializableDictionary> 1227 <SerializableDictionary> 1228 <key> 1229 <string>110130</string> 1230 </key> 1231 <value> 1232 <string>贺州</string> 1233 </value> 1234 </SerializableDictionary> 1235 <SerializableDictionary> 1236 <key> 1237 <string>110140</string> 1238 </key> 1239 <value> 1240 <string>河池</string> 1241 </value> 1242 </SerializableDictionary> 1243 <SerializableDictionary> 1244 <key> 1245 <string>110150</string> 1246 </key> 1247 <value> 1248 <string>贵港</string> 1249 </value> 1250 </SerializableDictionary> 1251 <SerializableDictionary> 1252 <key> 1253 <string>120020</string> 1254 </key> 1255 <value> 1256 <string>贵阳</string> 1257 </value> 1258 </SerializableDictionary> 1259 <SerializableDictionary> 1260 <key> 1261 <string>120030</string> 1262 </key> 1263 <value> 1264 <string>遵义</string> 1265 </value> 1266 </SerializableDictionary> 1267 <SerializableDictionary> 1268 <key> 1269 <string>120040</string> 1270 </key> 1271 <value> 1272 <string>六盘水</string> 1273 </value> 1274 </SerializableDictionary> 1275 <SerializableDictionary> 1276 <key> 1277 <string>120050</string> 1278 </key> 1279 <value> 1280 <string>安顺</string> 1281 </value> 1282 </SerializableDictionary> 1283 <SerializableDictionary> 1284 <key> 1285 <string>120060</string> 1286 </key> 1287 <value> 1288 <string>毕节</string> 1289 </value> 1290 </SerializableDictionary> 1291 <SerializableDictionary> 1292 <key> 1293 <string>120070</string> 1294 </key> 1295 <value> 1296 <string>铜仁</string> 1297 </value> 1298 </SerializableDictionary> 1299 <SerializableDictionary> 1300 <key> 1301 <string>120080</string> 1302 </key> 1303 <value> 1304 <string>黔西南布依苗族自治州</string> 1305 </value> 1306 </SerializableDictionary> 1307 <SerializableDictionary> 1308 <key> 1309 <string>120090</string> 1310 </key> 1311 <value> 1312 <string>黔东南苗族侗族自治州</string> 1313 </value> 1314 </SerializableDictionary> 1315 <SerializableDictionary> 1316 <key> 1317 <string>120100</string> 1318 </key> 1319 <value> 1320 <string>黔南布依苗族自治州</string> 1321 </value> 1322 </SerializableDictionary> 1323 <SerializableDictionary> 1324 <key> 1325 <string>130020</string> 1326 </key> 1327 <value> 1328 <string>海口</string> 1329 </value> 1330 </SerializableDictionary> 1331 <SerializableDictionary> 1332 <key> 1333 <string>130030</string> 1334 </key> 1335 <value> 1336 <string>三亚</string> 1337 </value> 1338 </SerializableDictionary> 1339 <SerializableDictionary> 1340 <key> 1341 <string>130040</string> 1342 </key> 1343 <value> 1344 <string>三沙</string> 1345 </value> 1346 </SerializableDictionary> 1347 <SerializableDictionary> 1348 <key> 1349 <string>130060</string> 1350 </key> 1351 <value> 1352 <string>文昌</string> 1353 </value> 1354 </SerializableDictionary> 1355 <SerializableDictionary> 1356 <key> 1357 <string>130070</string> 1358 </key> 1359 <value> 1360 <string>琼海</string> 1361 </value> 1362 </SerializableDictionary> 1363 <SerializableDictionary> 1364 <key> 1365 <string>130080</string> 1366 </key> 1367 <value> 1368 <string>万宁</string> 1369 </value> 1370 </SerializableDictionary> 1371 <SerializableDictionary> 1372 <key> 1373 <string>130090</string> 1374 </key> 1375 <value> 1376 <string>儋州</string> 1377 </value> 1378 </SerializableDictionary> 1379 <SerializableDictionary> 1380 <key> 1381 <string>130100</string> 1382 </key> 1383 <value> 1384 <string>东方</string> 1385 </value> 1386 </SerializableDictionary> 1387 <SerializableDictionary> 1388 <key> 1389 <string>130110</string> 1390 </key> 1391 <value> 1392 <string>五指山</string> 1393 </value> 1394 </SerializableDictionary> 1395 <SerializableDictionary> 1396 <key> 1397 <string>130120</string> 1398 </key> 1399 <value> 1400 <string>定安</string> 1401 </value> 1402 </SerializableDictionary> 1403 <SerializableDictionary> 1404 <key> 1405 <string>130130</string> 1406 </key> 1407 <value> 1408 <string>屯昌</string> 1409 </value> 1410 </SerializableDictionary> 1411 <SerializableDictionary> 1412 <key> 1413 <string>130140</string> 1414 </key> 1415 <value> 1416 <string>澄迈</string> 1417 </value> 1418 </SerializableDictionary> 1419 <SerializableDictionary> 1420 <key> 1421 <string>130150</string> 1422 </key> 1423 <value> 1424 <string>临高</string> 1425 </value> 1426 </SerializableDictionary> 1427 <SerializableDictionary> 1428 <key> 1429 <string>130160</string> 1430 </key> 1431 <value> 1432 <string>琼中黎族苗族自治县</string> 1433 </value> 1434 </SerializableDictionary> 1435 <SerializableDictionary> 1436 <key> 1437 <string>130170</string> 1438 </key> 1439 <value> 1440 <string>保亭黎族苗族自治县</string> 1441 </value> 1442 </SerializableDictionary> 1443 <SerializableDictionary> 1444 <key> 1445 <string>130180</string> 1446 </key> 1447 <value> 1448 <string>白沙黎族自治县</string> 1449 </value> 1450 </SerializableDictionary> 1451 <SerializableDictionary> 1452 <key> 1453 <string>130190</string> 1454 </key> 1455 <value> 1456 <string>昌江黎族自治县</string> 1457 </value> 1458 </SerializableDictionary> 1459 <SerializableDictionary> 1460 <key> 1461 <string>130200</string> 1462 </key> 1463 <value> 1464 <string>乐东黎族自治县</string> 1465 </value> 1466 </SerializableDictionary> 1467 <SerializableDictionary> 1468 <key> 1469 <string>130210</string> 1470 </key> 1471 <value> 1472 <string>陵水黎族自治县</string> 1473 </value> 1474 </SerializableDictionary> 1475 <SerializableDictionary> 1476 <key> 1477 <string>140020</string> 1478 </key> 1479 <value> 1480 <string>石家庄</string> 1481 </value> 1482 </SerializableDictionary> 1483 <SerializableDictionary> 1484 <key> 1485 <string>140030</string> 1486 </key> 1487 <value> 1488 <string>保定</string> 1489 </value> 1490 </SerializableDictionary> 1491 <SerializableDictionary> 1492 <key> 1493 <string>140040</string> 1494 </key> 1495 <value> 1496 <string>承德</string> 1497 </value> 1498 </SerializableDictionary> 1499 <SerializableDictionary> 1500 <key> 1501 <string>140050</string> 1502 </key> 1503 <value> 1504 <string>邯郸</string> 1505 </value> 1506 </SerializableDictionary> 1507 <SerializableDictionary> 1508 <key> 1509 <string>140060</string> 1510 </key> 1511 <value> 1512 <string>廊坊</string> 1513 </value> 1514 </SerializableDictionary> 1515 <SerializableDictionary> 1516 <key> 1517 <string>140070</string> 1518 </key> 1519 <value> 1520 <string>秦皇岛</string> 1521 </value> 1522 </SerializableDictionary> 1523 <SerializableDictionary> 1524 <key> 1525 <string>140080</string> 1526 </key> 1527 <value> 1528 <string>唐山</string> 1529 </value> 1530 </SerializableDictionary> 1531 <SerializableDictionary> 1532 <key> 1533 <string>140090</string> 1534 </key> 1535 <value> 1536 <string>张家口</string> 1537 </value> 1538 </SerializableDictionary> 1539 <SerializableDictionary> 1540 <key> 1541 <string>140100</string> 1542 </key> 1543 <value> 1544 <string>邢台</string> 1545 </value> 1546 </SerializableDictionary> 1547 <SerializableDictionary> 1548 <key> 1549 <string>140110</string> 1550 </key> 1551 <value> 1552 <string>沧州</string> 1553 </value> 1554 </SerializableDictionary> 1555 <SerializableDictionary> 1556 <key> 1557 <string>140120</string> 1558 </key> 1559 <value> 1560 <string>衡水</string> 1561 </value> 1562 </SerializableDictionary> 1563 <SerializableDictionary> 1564 <key> 1565 <string>140130</string> 1566 </key> 1567 <value> 1568 <string>燕郊开发区</string> 1569 </value> 1570 </SerializableDictionary> 1571 <SerializableDictionary> 1572 <key> 1573 <string>140140</string> 1574 </key> 1575 <value> 1576 <string>固安</string> 1577 </value> 1578 </SerializableDictionary> 1579 <SerializableDictionary> 1580 <key> 1581 <string>140150</string> 1582 </key> 1583 <value> 1584 <string>遵化</string> 1585 </value> 1586 </SerializableDictionary> 1587 <SerializableDictionary> 1588 <key> 1589 <string>140160</string> 1590 </key> 1591 <value> 1592 <string>香河</string> 1593 </value> 1594 </SerializableDictionary> 1595 <SerializableDictionary> 1596 <key> 1597 <string>140170</string> 1598 </key> 1599 <value> 1600 <string>三河</string> 1601 </value> 1602 </SerializableDictionary> 1603 <SerializableDictionary> 1604 <key> 1605 <string>150020</string> 1606 </key> 1607 <value> 1608 <string>郑州</string> 1609 </value> 1610 </SerializableDictionary> 1611 <SerializableDictionary> 1612 <key> 1613 <string>150030</string> 1614 </key> 1615 <value> 1616 <string>开封</string> 1617 </value> 1618 </SerializableDictionary> 1619 <SerializableDictionary> 1620 <key> 1621 <string>150040</string> 1622 </key> 1623 <value> 1624 <string>洛阳</string> 1625 </value> 1626 </SerializableDictionary> 1627 <SerializableDictionary> 1628 <key> 1629 <string>150050</string> 1630 </key> 1631 <value> 1632 <string>商丘</string> 1633 </value> 1634 </SerializableDictionary> 1635 <SerializableDictionary> 1636 <key> 1637 <string>150060</string> 1638 </key> 1639 <value> 1640 <string>安阳</string> 1641 </value> 1642 </SerializableDictionary> 1643 <SerializableDictionary> 1644 <key> 1645 <string>150070</string> 1646 </key> 1647 <value> 1648 <string>平顶山</string> 1649 </value> 1650 </SerializableDictionary> 1651 <SerializableDictionary> 1652 <key> 1653 <string>150080</string> 1654 </key> 1655 <value> 1656 <string>新乡</string> 1657 </value> 1658 </SerializableDictionary> 1659 <SerializableDictionary> 1660 <key> 1661 <string>150090</string> 1662 </key> 1663 <value> 1664 <string>焦作</string> 1665 </value> 1666 </SerializableDictionary> 1667 <SerializableDictionary> 1668 <key> 1669 <string>150100</string> 1670 </key> 1671 <value> 1672 <string>濮阳</string> 1673 </value> 1674 </SerializableDictionary> 1675 <SerializableDictionary> 1676 <key> 1677 <string>150110</string> 1678 </key> 1679 <value> 1680 <string>许昌</string> 1681 </value> 1682 </SerializableDictionary> 1683 <SerializableDictionary> 1684 <key> 1685 <string>150120</string> 1686 </key> 1687 <value> 1688 <string>漯河</string> 1689 </value> 1690 </SerializableDictionary> 1691 <SerializableDictionary> 1692 <key> 1693 <string>150130</string> 1694 </key> 1695 <value> 1696 <string>三门峡</string> 1697 </value> 1698 </SerializableDictionary> 1699 <SerializableDictionary> 1700 <key> 1701 <string>150140</string> 1702 </key> 1703 <value> 1704 <string>鹤壁</string> 1705 </value> 1706 </SerializableDictionary> 1707 <SerializableDictionary> 1708 <key> 1709 <string>150150</string> 1710 </key> 1711 <value> 1712 <string>周口</string> 1713 </value> 1714 </SerializableDictionary> 1715 <SerializableDictionary> 1716 <key> 1717 <string>150160</string> 1718 </key> 1719 <value> 1720 <string>驻马店</string> 1721 </value> 1722 </SerializableDictionary> 1723 <SerializableDictionary> 1724 <key> 1725 <string>150170</string> 1726 </key> 1727 <value> 1728 <string>南阳</string> 1729 </value> 1730 </SerializableDictionary> 1731 <SerializableDictionary> 1732 <key> 1733 <string>150180</string> 1734 </key> 1735 <value> 1736 <string>信阳</string> 1737 </value> 1738 </SerializableDictionary> 1739 <SerializableDictionary> 1740 <key> 1741 <string>150190</string> 1742 </key> 1743 <value> 1744 <string>济源</string> 1745 </value> 1746 </SerializableDictionary> 1747 <SerializableDictionary> 1748 <key> 1749 <string>150200</string> 1750 </key> 1751 <value> 1752 <string>西平</string> 1753 </value> 1754 </SerializableDictionary> 1755 <SerializableDictionary> 1756 <key> 1757 <string>150210</string> 1758 </key> 1759 <value> 1760 <string>长葛</string> 1761 </value> 1762 </SerializableDictionary> 1763 <SerializableDictionary> 1764 <key> 1765 <string>160020</string> 1766 </key> 1767 <value> 1768 <string>哈尔滨</string> 1769 </value> 1770 </SerializableDictionary> 1771 <SerializableDictionary> 1772 <key> 1773 <string>160030</string> 1774 </key> 1775 <value> 1776 <string>大庆</string> 1777 </value> 1778 </SerializableDictionary> 1779 <SerializableDictionary> 1780 <key> 1781 <string>160040</string> 1782 </key> 1783 <value> 1784 <string>佳木斯</string> 1785 </value> 1786 </SerializableDictionary> 1787 <SerializableDictionary> 1788 <key> 1789 <string>160050</string> 1790 </key> 1791 <value> 1792 <string>牡丹江</string> 1793 </value> 1794 </SerializableDictionary> 1795 <SerializableDictionary> 1796 <key> 1797 <string>160060</string> 1798 </key> 1799 <value> 1800 <string>齐齐哈尔</string> 1801 </value> 1802 </SerializableDictionary> 1803 <SerializableDictionary> 1804 <key> 1805 <string>160070</string> 1806 </key> 1807 <value> 1808 <string>鸡西</string> 1809 </value> 1810 </SerializableDictionary> 1811 <SerializableDictionary> 1812 <key> 1813 <string>160080</string> 1814 </key> 1815 <value> 1816 <string>鹤岗</string> 1817 </value> 1818 </SerializableDictionary> 1819 <SerializableDictionary> 1820 <key> 1821 <string>160090</string> 1822 </key> 1823 <value> 1824 <string>双鸭山</string> 1825 </value> 1826 </SerializableDictionary> 1827 <SerializableDictionary> 1828 <key> 1829 <string>160100</string> 1830 </key> 1831 <value> 1832 <string>伊春</string> 1833 </value> 1834 </SerializableDictionary> 1835 <SerializableDictionary> 1836 <key> 1837 <string>160110</string> 1838 </key> 1839 <value> 1840 <string>七台河</string> 1841 </value> 1842 </SerializableDictionary> 1843 <SerializableDictionary> 1844 <key> 1845 <string>160120</string> 1846 </key> 1847 <value> 1848 <string>黑河</string> 1849 </value> 1850 </SerializableDictionary> 1851 <SerializableDictionary> 1852 <key> 1853 <string>160130</string> 1854 </key> 1855 <value> 1856 <string>绥化</string> 1857 </value> 1858 </SerializableDictionary> 1859 <SerializableDictionary> 1860 <key> 1861 <string>160140</string> 1862 </key> 1863 <value> 1864 <string>大兴安岭</string> 1865 </value> 1866 </SerializableDictionary> 1867 <SerializableDictionary> 1868 <key> 1869 <string>160150</string> 1870 </key> 1871 <value> 1872 <string>安达</string> 1873 </value> 1874 </SerializableDictionary> 1875 <SerializableDictionary> 1876 <key> 1877 <string>160160</string> 1878 </key> 1879 <value> 1880 <string>双城</string> 1881 </value> 1882 </SerializableDictionary> 1883 <SerializableDictionary> 1884 <key> 1885 <string>160170</string> 1886 </key> 1887 <value> 1888 <string>尚志</string> 1889 </value> 1890 </SerializableDictionary> 1891 <SerializableDictionary> 1892 <key> 1893 <string>160180</string> 1894 </key> 1895 <value> 1896 <string>绥芬河</string> 1897 </value> 1898 </SerializableDictionary> 1899 <SerializableDictionary> 1900 <key> 1901 <string>160190</string> 1902 </key> 1903 <value> 1904 <string>肇东</string> 1905 </value> 1906 </SerializableDictionary> 1907 <SerializableDictionary> 1908 <key> 1909 <string>170020</string> 1910 </key> 1911 <value> 1912 <string>武汉</string> 1913 </value> 1914 </SerializableDictionary> 1915 <SerializableDictionary> 1916 <key> 1917 <string>170030</string> 1918 </key> 1919 <value> 1920 <string>十堰</string> 1921 </value> 1922 </SerializableDictionary> 1923 <SerializableDictionary> 1924 <key> 1925 <string>170040</string> 1926 </key> 1927 <value> 1928 <string>襄阳</string> 1929 </value> 1930 </SerializableDictionary> 1931 <SerializableDictionary> 1932 <key> 1933 <string>170050</string> 1934 </key> 1935 <value> 1936 <string>宜昌</string> 1937 </value> 1938 </SerializableDictionary> 1939 <SerializableDictionary> 1940 <key> 1941 <string>170060</string> 1942 </key> 1943 <value> 1944 <string>潜江</string> 1945 </value> 1946 </SerializableDictionary> 1947 <SerializableDictionary> 1948 <key> 1949 <string>170070</string> 1950 </key> 1951 <value> 1952 <string>荆门</string> 1953 </value> 1954 </SerializableDictionary> 1955 <SerializableDictionary> 1956 <key> 1957 <string>170080</string> 1958 </key> 1959 <value> 1960 <string>荆州</string> 1961 </value> 1962 </SerializableDictionary> 1963 <SerializableDictionary> 1964 <key> 1965 <string>170090</string> 1966 </key> 1967 <value> 1968 <string>黄石</string> 1969 </value> 1970 </SerializableDictionary> 1971 <SerializableDictionary> 1972 <key> 1973 <string>170100</string> 1974 </key> 1975 <value> 1976 <string>鄂州</string> 1977 </value> 1978 </SerializableDictionary> 1979 <SerializableDictionary> 1980 <key> 1981 <string>170110</string> 1982 </key> 1983 <value> 1984 <string>黄冈</string> 1985 </value> 1986 </SerializableDictionary> 1987 <SerializableDictionary> 1988 <key> 1989 <string>170120</string> 1990 </key> 1991 <value> 1992 <string>孝感</string> 1993 </value> 1994 </SerializableDictionary> 1995 <SerializableDictionary> 1996 <key> 1997 <string>170130</string> 1998 </key> 1999 <value> 2000 <string>咸宁</string> 2001 </value> 2002 </SerializableDictionary> 2003 <SerializableDictionary> 2004 <key> 2005 <string>170140</string> 2006 </key> 2007 <value> 2008 <string>随州</string> 2009 </value> 2010 </SerializableDictionary> 2011 <SerializableDictionary> 2012 <key> 2013 <string>170150</string> 2014 </key> 2015 <value> 2016 <string>仙桃</string> 2017 </value> 2018 </SerializableDictionary> 2019 <SerializableDictionary> 2020 <key> 2021 <string>170160</string> 2022 </key> 2023 <value> 2024 <string>天门</string> 2025 </value> 2026 </SerializableDictionary> 2027 <SerializableDictionary> 2028 <key> 2029 <string>170170</string> 2030 </key> 2031 <value> 2032 <string>神农架</string> 2033 </value> 2034 </SerializableDictionary> 2035 <SerializableDictionary> 2036 <key> 2037 <string>170180</string> 2038 </key> 2039 <value> 2040 <string>恩施</string> 2041 </value> 2042 </SerializableDictionary> 2043 <SerializableDictionary> 2044 <key> 2045 <string>170190</string> 2046 </key> 2047 <value> 2048 <string>公安</string> 2049 </value> 2050 </SerializableDictionary> 2051 <SerializableDictionary> 2052 <key> 2053 <string>170200</string> 2054 </key> 2055 <value> 2056 <string>武穴</string> 2057 </value> 2058 </SerializableDictionary> 2059 <SerializableDictionary> 2060 <key> 2061 <string>170210</string> 2062 </key> 2063 <value> 2064 <string>宜城</string> 2065 </value> 2066 </SerializableDictionary> 2067 <SerializableDictionary> 2068 <key> 2069 <string>180020</string> 2070 </key> 2071 <value> 2072 <string>长沙</string> 2073 </value> 2074 </SerializableDictionary> 2075 <SerializableDictionary> 2076 <key> 2077 <string>180030</string> 2078 </key> 2079 <value> 2080 <string>湘潭</string> 2081 </value> 2082 </SerializableDictionary> 2083 <SerializableDictionary> 2084 <key> 2085 <string>180040</string> 2086 </key> 2087 <value> 2088 <string>株洲</string> 2089 </value> 2090 </SerializableDictionary> 2091 <SerializableDictionary> 2092 <key> 2093 <string>180050</string> 2094 </key> 2095 <value> 2096 <string>常德</string> 2097 </value> 2098 </SerializableDictionary> 2099 <SerializableDictionary> 2100 <key> 2101 <string>180060</string> 2102 </key> 2103 <value> 2104 <string>衡阳</string> 2105 </value> 2106 </SerializableDictionary> 2107 <SerializableDictionary> 2108 <key> 2109 <string>180070</string> 2110 </key> 2111 <value> 2112 <string>益阳</string> 2113 </value> 2114 </SerializableDictionary> 2115 <SerializableDictionary> 2116 <key> 2117 <string>180080</string> 2118 </key> 2119 <value> 2120 <string>郴州</string> 2121 </value> 2122 </SerializableDictionary> 2123 <SerializableDictionary> 2124 <key> 2125 <string>180090</string> 2126 </key> 2127 <value> 2128 <string>岳阳</string> 2129 </value> 2130 </SerializableDictionary> 2131 <SerializableDictionary> 2132 <key> 2133 <string>180100</string> 2134 </key> 2135 <value> 2136 <string>邵阳</string> 2137 </value> 2138 </SerializableDictionary> 2139 <SerializableDictionary> 2140 <key> 2141 <string>180110</string> 2142 </key> 2143 <value> 2144 <string>张家界</string> 2145 </value> 2146 </SerializableDictionary> 2147 <SerializableDictionary> 2148 <key> 2149 <string>180120</string> 2150 </key> 2151 <value> 2152 <string>娄底</string> 2153 </value> 2154 </SerializableDictionary> 2155 <SerializableDictionary> 2156 <key> 2157 <string>180130</string> 2158 </key> 2159 <value> 2160 <string>永州</string> 2161 </value> 2162 </SerializableDictionary> 2163 <SerializableDictionary> 2164 <key> 2165 <string>180140</string> 2166 </key> 2167 <value> 2168 <string>怀化</string> 2169 </value> 2170 </SerializableDictionary> 2171 <SerializableDictionary> 2172 <key> 2173 <string>180150</string> 2174 </key> 2175 <value> 2176 <string>湘西土家族苗族自治州</string> 2177 </value> 2178 </SerializableDictionary> 2179 <SerializableDictionary> 2180 <key> 2181 <string>190020</string> 2182 </key> 2183 <value> 2184 <string>长春</string> 2185 </value> 2186 </SerializableDictionary> 2187 <SerializableDictionary> 2188 <key> 2189 <string>190030</string> 2190 </key> 2191 <value> 2192 <string>吉林市</string> 2193 </value> 2194 </SerializableDictionary> 2195 <SerializableDictionary> 2196 <key> 2197 <string>190040</string> 2198 </key> 2199 <value> 2200 <string>四平</string> 2201 </value> 2202 </SerializableDictionary> 2203 <SerializableDictionary> 2204 <key> 2205 <string>190050</string> 2206 </key> 2207 <value> 2208 <string>辽源</string> 2209 </value> 2210 </SerializableDictionary> 2211 <SerializableDictionary> 2212 <key> 2213 <string>190060</string> 2214 </key> 2215 <value> 2216 <string>通化</string> 2217 </value> 2218 </SerializableDictionary> 2219 <SerializableDictionary> 2220 <key> 2221 <string>190070</string> 2222 </key> 2223 <value> 2224 <string>白山</string> 2225 </value> 2226 </SerializableDictionary> 2227 <SerializableDictionary> 2228 <key> 2229 <string>190080</string> 2230 </key> 2231 <value> 2232 <string>松原</string> 2233 </value> 2234 </SerializableDictionary> 2235 <SerializableDictionary> 2236 <key> 2237 <string>190090</string> 2238 </key> 2239 <value> 2240 <string>白城</string> 2241 </value> 2242 </SerializableDictionary> 2243 <SerializableDictionary> 2244 <key> 2245 <string>190100</string> 2246 </key> 2247 <value> 2248 <string>延吉</string> 2249 </value> 2250 </SerializableDictionary> 2251 <SerializableDictionary> 2252 <key> 2253 <string>190110</string> 2254 </key> 2255 <value> 2256 <string>延边</string> 2257 </value> 2258 </SerializableDictionary> 2259 <SerializableDictionary> 2260 <key> 2261 <string>190120</string> 2262 </key> 2263 <value> 2264 <string>公主岭</string> 2265 </value> 2266 </SerializableDictionary> 2267 <SerializableDictionary> 2268 <key> 2269 <string>200020</string> 2270 </key> 2271 <value> 2272 <string>南昌</string> 2273 </value> 2274 </SerializableDictionary> 2275 <SerializableDictionary> 2276 <key> 2277 <string>200030</string> 2278 </key> 2279 <value> 2280 <string>九江</string> 2281 </value> 2282 </SerializableDictionary> 2283 <SerializableDictionary> 2284 <key> 2285 <string>200040</string> 2286 </key> 2287 <value> 2288 <string>赣州</string> 2289 </value> 2290 </SerializableDictionary> 2291 <SerializableDictionary> 2292 <key> 2293 <string>200050</string> 2294 </key> 2295 <value> 2296 <string>宜春</string> 2297 </value> 2298 </SerializableDictionary> 2299 <SerializableDictionary> 2300 <key> 2301 <string>200060</string> 2302 </key> 2303 <value> 2304 <string>吉安</string> 2305 </value> 2306 </SerializableDictionary> 2307 <SerializableDictionary> 2308 <key> 2309 <string>200070</string> 2310 </key> 2311 <value> 2312 <string>上饶</string> 2313 </value> 2314 </SerializableDictionary> 2315 <SerializableDictionary> 2316 <key> 2317 <string>200080</string> 2318 </key> 2319 <value> 2320 <string>抚州</string> 2321 </value> 2322 </SerializableDictionary> 2323 <SerializableDictionary> 2324 <key> 2325 <string>200090</string> 2326 </key> 2327 <value> 2328 <string>景德镇</string> 2329 </value> 2330 </SerializableDictionary> 2331 <SerializableDictionary> 2332 <key> 2333 <string>200100</string> 2334 </key> 2335 <value> 2336 <string>萍乡</string> 2337 </value> 2338 </SerializableDictionary> 2339 <SerializableDictionary> 2340 <key> 2341 <string>200110</string> 2342 </key> 2343 <value> 2344 <string>新余</string> 2345 </value> 2346 </SerializableDictionary> 2347 <SerializableDictionary> 2348 <key> 2349 <string>200120</string> 2350 </key> 2351 <value> 2352 <string>鹰潭</string> 2353 </value> 2354 </SerializableDictionary> 2355 <SerializableDictionary> 2356 <key> 2357 <string>210020</string> 2358 </key> 2359 <value> 2360 <string>沈阳</string> 2361 </value> 2362 </SerializableDictionary> 2363 <SerializableDictionary> 2364 <key> 2365 <string>210030</string> 2366 </key> 2367 <value> 2368 <string>鞍山</string> 2369 </value> 2370 </SerializableDictionary> 2371 <SerializableDictionary> 2372 <key> 2373 <string>210040</string> 2374 </key> 2375 <value> 2376 <string>大连</string> 2377 </value> 2378 </SerializableDictionary> 2379 <SerializableDictionary> 2380 <key> 2381 <string>210050</string> 2382 </key> 2383 <value> 2384 <string>葫芦岛</string> 2385 </value> 2386 </SerializableDictionary> 2387 <SerializableDictionary> 2388 <key> 2389 <string>210060</string> 2390 </key> 2391 <value> 2392 <string>抚顺</string> 2393 </value> 2394 </SerializableDictionary> 2395 <SerializableDictionary> 2396 <key> 2397 <string>210070</string> 2398 </key> 2399 <value> 2400 <string>本溪</string> 2401 </value> 2402 </SerializableDictionary> 2403 <SerializableDictionary> 2404 <key> 2405 <string>210080</string> 2406 </key> 2407 <value> 2408 <string>丹东</string> 2409 </value> 2410 </SerializableDictionary> 2411 <SerializableDictionary> 2412 <key> 2413 <string>210090</string> 2414 </key> 2415 <value> 2416 <string>锦州</string> 2417 </value> 2418 </SerializableDictionary> 2419 <SerializableDictionary> 2420 <key> 2421 <string>210100</string> 2422 </key> 2423 <value> 2424 <string>营口</string> 2425 </value> 2426 </SerializableDictionary> 2427 <SerializableDictionary> 2428 <key> 2429 <string>210110</string> 2430 </key> 2431 <value> 2432 <string>阜新</string> 2433 </value> 2434 </SerializableDictionary> 2435 <SerializableDictionary> 2436 <key> 2437 <string>210120</string> 2438 </key> 2439 <value> 2440 <string>辽阳</string> 2441 </value> 2442 </SerializableDictionary> 2443 <SerializableDictionary> 2444 <key> 2445 <string>210130</string> 2446 </key> 2447 <value> 2448 <string>盘锦</string> 2449 </value> 2450 </SerializableDictionary> 2451 <SerializableDictionary> 2452 <key> 2453 <string>210140</string> 2454 </key> 2455 <value> 2456 <string>铁岭</string> 2457 </value> 2458 </SerializableDictionary> 2459 <SerializableDictionary> 2460 <key> 2461 <string>210150</string> 2462 </key> 2463 <value> 2464 <string>朝阳</string> 2465 </value> 2466 </SerializableDictionary> 2467 <SerializableDictionary> 2468 <key> 2469 <string>210160</string> 2470 </key> 2471 <value> 2472 <string>兴城</string> 2473 </value> 2474 </SerializableDictionary> 2475 <SerializableDictionary> 2476 <key> 2477 <string>210170</string> 2478 </key> 2479 <value> 2480 <string>海城</string> 2481 </value> 2482 </SerializableDictionary> 2483 <SerializableDictionary> 2484 <key> 2485 <string>210180</string> 2486 </key> 2487 <value> 2488 <string>昌图</string> 2489 </value> 2490 </SerializableDictionary> 2491 <SerializableDictionary> 2492 <key> 2493 <string>210190</string> 2494 </key> 2495 <value> 2496 <string>开原</string> 2497 </value> 2498 </SerializableDictionary> 2499 <SerializableDictionary> 2500 <key> 2501 <string>220020</string> 2502 </key> 2503 <value> 2504 <string>呼和浩特</string> 2505 </value> 2506 </SerializableDictionary> 2507 <SerializableDictionary> 2508 <key> 2509 <string>220030</string> 2510 </key> 2511 <value> 2512 <string>包头</string> 2513 </value> 2514 </SerializableDictionary> 2515 <SerializableDictionary> 2516 <key> 2517 <string>220040</string> 2518 </key> 2519 <value> 2520 <string>赤峰</string> 2521 </value> 2522 </SerializableDictionary> 2523 <SerializableDictionary> 2524 <key> 2525 <string>220050</string> 2526 </key> 2527 <value> 2528 <string>鄂尔多斯</string> 2529 </value> 2530 </SerializableDictionary> 2531 <SerializableDictionary> 2532 <key> 2533 <string>220060</string> 2534 </key> 2535 <value> 2536 <string>乌海</string> 2537 </value> 2538 </SerializableDictionary> 2539 <SerializableDictionary> 2540 <key> 2541 <string>220070</string> 2542 </key> 2543 <value> 2544 <string>通辽</string> 2545 </value> 2546 </SerializableDictionary> 2547 <SerializableDictionary> 2548 <key> 2549 <string>220080</string> 2550 </key> 2551 <value> 2552 <string>呼伦贝尔</string> 2553 </value> 2554 </SerializableDictionary> 2555 <SerializableDictionary> 2556 <key> 2557 <string>220090</string> 2558 </key> 2559 <value> 2560 <string>巴彦淖尔</string> 2561 </value> 2562 </SerializableDictionary> 2563 <SerializableDictionary> 2564 <key> 2565 <string>220100</string> 2566 </key> 2567 <value> 2568 <string>乌兰察布</string> 2569 </value> 2570 </SerializableDictionary> 2571 <SerializableDictionary> 2572 <key> 2573 <string>220110</string> 2574 </key> 2575 <value> 2576 <string>兴安盟</string> 2577 </value> 2578 </SerializableDictionary> 2579 <SerializableDictionary> 2580 <key> 2581 <string>220120</string> 2582 </key> 2583 <value> 2584 <string>锡林郭勒盟</string> 2585 </value> 2586 </SerializableDictionary> 2587 <SerializableDictionary> 2588 <key> 2589 <string>220130</string> 2590 </key> 2591 <value> 2592 <string>阿拉善盟</string> 2593 </value> 2594 </SerializableDictionary> 2595 <SerializableDictionary> 2596 <key> 2597 <string>220140</string> 2598 </key> 2599 <value> 2600 <string>乌审旗</string> 2601 </value> 2602 </SerializableDictionary> 2603 <SerializableDictionary> 2604 <key> 2605 <string>220150</string> 2606 </key> 2607 <value> 2608 <string>满洲里</string> 2609 </value> 2610 </SerializableDictionary> 2611 <SerializableDictionary> 2612 <key> 2613 <string>230020</string> 2614 </key> 2615 <value> 2616 <string>银川</string> 2617 </value> 2618 </SerializableDictionary> 2619 <SerializableDictionary> 2620 <key> 2621 <string>230030</string> 2622 </key> 2623 <value> 2624 <string>石嘴山</string> 2625 </value> 2626 </SerializableDictionary> 2627 <SerializableDictionary> 2628 <key> 2629 <string>230040</string> 2630 </key> 2631 <value> 2632 <string>吴忠</string> 2633 </value> 2634 </SerializableDictionary> 2635 <SerializableDictionary> 2636 <key> 2637 <string>230050</string> 2638 </key> 2639 <value> 2640 <string>固原</string> 2641 </value> 2642 </SerializableDictionary> 2643 <SerializableDictionary> 2644 <key> 2645 <string>230060</string> 2646 </key> 2647 <value> 2648 <string>中卫</string> 2649 </value> 2650 </SerializableDictionary> 2651 <SerializableDictionary> 2652 <key> 2653 <string>240020</string> 2654 </key> 2655 <value> 2656 <string>西宁</string> 2657 </value> 2658 </SerializableDictionary> 2659 <SerializableDictionary> 2660 <key> 2661 <string>240030</string> 2662 </key> 2663 <value> 2664 <string>海东</string> 2665 </value> 2666 </SerializableDictionary> 2667 <SerializableDictionary> 2668 <key> 2669 <string>240040</string> 2670 </key> 2671 <value> 2672 <string>海西藏族自治州</string> 2673 </value> 2674 </SerializableDictionary> 2675 <SerializableDictionary> 2676 <key> 2677 <string>240050</string> 2678 </key> 2679 <value> 2680 <string>海北藏族自治州</string> 2681 </value> 2682 </SerializableDictionary> 2683 <SerializableDictionary> 2684 <key> 2685 <string>240060</string> 2686 </key> 2687 <value> 2688 <string>黄南藏族自治州</string> 2689 </value> 2690 </SerializableDictionary> 2691 <SerializableDictionary> 2692 <key> 2693 <string>240070</string> 2694 </key> 2695 <value> 2696 <string>海南藏族自治州</string> 2697 </value> 2698 </SerializableDictionary> 2699 <SerializableDictionary> 2700 <key> 2701 <string>240080</string> 2702 </key> 2703 <value> 2704 <string>果洛藏族自治州</string> 2705 </value> 2706 </SerializableDictionary> 2707 <SerializableDictionary> 2708 <key> 2709 <string>240090</string> 2710 </key> 2711 <value> 2712 <string>玉树藏族自治州</string> 2713 </value> 2714 </SerializableDictionary> 2715 <SerializableDictionary> 2716 <key> 2717 <string>250020</string> 2718 </key> 2719 <value> 2720 <string>济南</string> 2721 </value> 2722 </SerializableDictionary> 2723 <SerializableDictionary> 2724 <key> 2725 <string>250030</string> 2726 </key> 2727 <value> 2728 <string>德州</string> 2729 </value> 2730 </SerializableDictionary> 2731 <SerializableDictionary> 2732 <key> 2733 <string>250040</string> 2734 </key> 2735 <value> 2736 <string>东营</string> 2737 </value> 2738 </SerializableDictionary> 2739 <SerializableDictionary> 2740 <key> 2741 <string>250050</string> 2742 </key> 2743 <value> 2744 <string>济宁</string> 2745 </value> 2746 </SerializableDictionary> 2747 <SerializableDictionary> 2748 <key> 2749 <string>250060</string> 2750 </key> 2751 <value> 2752 <string>临沂</string> 2753 </value> 2754 </SerializableDictionary> 2755 <SerializableDictionary> 2756 <key> 2757 <string>250070</string> 2758 </key> 2759 <value> 2760 <string>青岛</string> 2761 </value> 2762 </SerializableDictionary> 2763 <SerializableDictionary> 2764 <key> 2765 <string>250080</string> 2766 </key> 2767 <value> 2768 <string>日照</string> 2769 </value> 2770 </SerializableDictionary> 2771 <SerializableDictionary> 2772 <key> 2773 <string>250090</string> 2774 </key> 2775 <value> 2776 <string>泰安</string> 2777 </value> 2778 </SerializableDictionary> 2779 <SerializableDictionary> 2780 <key> 2781 <string>250100</string> 2782 </key> 2783 <value> 2784 <string>威海</string> 2785 </value> 2786 </SerializableDictionary> 2787 <SerializableDictionary> 2788 <key> 2789 <string>250110</string> 2790 </key> 2791 <value> 2792 <string>潍坊</string> 2793 </value> 2794 </SerializableDictionary> 2795 <SerializableDictionary> 2796 <key> 2797 <string>250120</string> 2798 </key> 2799 <value> 2800 <string>烟台</string> 2801 </value> 2802 </SerializableDictionary> 2803 <SerializableDictionary> 2804 <key> 2805 <string>250130</string> 2806 </key> 2807 <value> 2808 <string>淄博</string> 2809 </value> 2810 </SerializableDictionary> 2811 <SerializableDictionary> 2812 <key> 2813 <string>250140</string> 2814 </key> 2815 <value> 2816 <string>枣庄</string> 2817 </value> 2818 </SerializableDictionary> 2819 <SerializableDictionary> 2820 <key> 2821 <string>250150</string> 2822 </key> 2823 <value> 2824 <string>滨州</string> 2825 </value> 2826 </SerializableDictionary> 2827 <SerializableDictionary> 2828 <key> 2829 <string>250160</string> 2830 </key> 2831 <value> 2832 <string>聊城</string> 2833 </value> 2834 </SerializableDictionary> 2835 <SerializableDictionary> 2836 <key> 2837 <string>250170</string> 2838 </key> 2839 <value> 2840 <string>菏泽</string> 2841 </value> 2842 </SerializableDictionary> 2843 <SerializableDictionary> 2844 <key> 2845 <string>250180</string> 2846 </key> 2847 <value> 2848 <string>莱芜</string> 2849 </value> 2850 </SerializableDictionary> 2851 <SerializableDictionary> 2852 <key> 2853 <string>250190</string> 2854 </key> 2855 <value> 2856 <string>荣成</string> 2857 </value> 2858 </SerializableDictionary> 2859 <SerializableDictionary> 2860 <key> 2861 <string>250200</string> 2862 </key> 2863 <value> 2864 <string>黄岛</string> 2865 </value> 2866 </SerializableDictionary> 2867 <SerializableDictionary> 2868 <key> 2869 <string>250210</string> 2870 </key> 2871 <value> 2872 <string>乳山</string> 2873 </value> 2874 </SerializableDictionary> 2875 <SerializableDictionary> 2876 <key> 2877 <string>250220</string> 2878 </key> 2879 <value> 2880 <string>城阳</string> 2881 </value> 2882 </SerializableDictionary> 2883 <SerializableDictionary> 2884 <key> 2885 <string>250230</string> 2886 </key> 2887 <value> 2888 <string>即墨</string> 2889 </value> 2890 </SerializableDictionary> 2891 <SerializableDictionary> 2892 <key> 2893 <string>250240</string> 2894 </key> 2895 <value> 2896 <string>肥城</string> 2897 </value> 2898 </SerializableDictionary> 2899 <SerializableDictionary> 2900 <key> 2901 <string>250250</string> 2902 </key> 2903 <value> 2904 <string>兖州</string> 2905 </value> 2906 </SerializableDictionary> 2907 <SerializableDictionary> 2908 <key> 2909 <string>250260</string> 2910 </key> 2911 <value> 2912 <string>海阳</string> 2913 </value> 2914 </SerializableDictionary> 2915 <SerializableDictionary> 2916 <key> 2917 <string>250270</string> 2918 </key> 2919 <value> 2920 <string>胶州</string> 2921 </value> 2922 </SerializableDictionary> 2923 <SerializableDictionary> 2924 <key> 2925 <string>250280</string> 2926 </key> 2927 <value> 2928 <string>胶南</string> 2929 </value> 2930 </SerializableDictionary> 2931 <SerializableDictionary> 2932 <key> 2933 <string>250290</string> 2934 </key> 2935 <value> 2936 <string>平度</string> 2937 </value> 2938 </SerializableDictionary> 2939 <SerializableDictionary> 2940 <key> 2941 <string>250300</string> 2942 </key> 2943 <value> 2944 <string>莱西</string> 2945 </value> 2946 </SerializableDictionary> 2947 <SerializableDictionary> 2948 <key> 2949 <string>260020</string> 2950 </key> 2951 <value> 2952 <string>太原</string> 2953 </value> 2954 </SerializableDictionary> 2955 <SerializableDictionary> 2956 <key> 2957 <string>260030</string> 2958 </key> 2959 <value> 2960 <string>大同</string> 2961 </value> 2962 </SerializableDictionary> 2963 <SerializableDictionary> 2964 <key> 2965 <string>260040</string> 2966 </key> 2967 <value> 2968 <string>临汾</string> 2969 </value> 2970 </SerializableDictionary> 2971 <SerializableDictionary> 2972 <key> 2973 <string>260050</string> 2974 </key> 2975 <value> 2976 <string>运城</string> 2977 </value> 2978 </SerializableDictionary> 2979 <SerializableDictionary> 2980 <key> 2981 <string>260060</string> 2982 </key> 2983 <value> 2984 <string>长治</string> 2985 </value> 2986 </SerializableDictionary> 2987 <SerializableDictionary> 2988 <key> 2989 <string>260070</string> 2990 </key> 2991 <value> 2992 <string>阳泉</string> 2993 </value> 2994 </SerializableDictionary> 2995 <SerializableDictionary> 2996 <key> 2997 <string>260080</string> 2998 </key> 2999 <value> 3000 <string>晋城</string> 3001 </value> 3002 </SerializableDictionary> 3003 <SerializableDictionary> 3004 <key> 3005 <string>260090</string> 3006 </key> 3007 <value> 3008 <string>朔州</string> 3009 </value> 3010 </SerializableDictionary> 3011 <SerializableDictionary> 3012 <key> 3013 <string>260100</string> 3014 </key> 3015 <value> 3016 <string>晋中</string> 3017 </value> 3018 </SerializableDictionary> 3019 <SerializableDictionary> 3020 <key> 3021 <string>260110</string> 3022 </key> 3023 <value> 3024 <string>忻州</string> 3025 </value> 3026 </SerializableDictionary> 3027 <SerializableDictionary> 3028 <key> 3029 <string>260120</string> 3030 </key> 3031 <value> 3032 <string>吕梁</string> 3033 </value> 3034 </SerializableDictionary> 3035 <SerializableDictionary> 3036 <key> 3037 <string>260130</string> 3038 </key> 3039 <value> 3040 <string>永济</string> 3041 </value> 3042 </SerializableDictionary> 3043 <SerializableDictionary> 3044 <key> 3045 <string>260140</string> 3046 </key> 3047 <value> 3048 <string>和顺</string> 3049 </value> 3050 </SerializableDictionary> 3051 <SerializableDictionary> 3052 <key> 3053 <string>270020</string> 3054 </key> 3055 <value> 3056 <string>西安</string> 3057 </value> 3058 </SerializableDictionary> 3059 <SerializableDictionary> 3060 <key> 3061 <string>270030</string> 3062 </key> 3063 <value> 3064 <string>宝鸡</string> 3065 </value> 3066 </SerializableDictionary> 3067 <SerializableDictionary> 3068 <key> 3069 <string>270040</string> 3070 </key> 3071 <value> 3072 <string>咸阳</string> 3073 </value> 3074 </SerializableDictionary> 3075 <SerializableDictionary> 3076 <key> 3077 <string>270050</string> 3078 </key> 3079 <value> 3080 <string>铜川</string> 3081 </value> 3082 </SerializableDictionary> 3083 <SerializableDictionary> 3084 <key> 3085 <string>270060</string> 3086 </key> 3087 <value> 3088 <string>渭南</string> 3089 </value> 3090 </SerializableDictionary> 3091 <SerializableDictionary> 3092 <key> 3093 <string>270070</string> 3094 </key> 3095 <value> 3096 <string>汉中</string> 3097 </value> 3098 </SerializableDictionary> 3099 <SerializableDictionary> 3100 <key> 3101 <string>270080</string> 3102 </key> 3103 <value> 3104 <string>安康</string> 3105 </value> 3106 </SerializableDictionary> 3107 <SerializableDictionary> 3108 <key> 3109 <string>270090</string> 3110 </key> 3111 <value> 3112 <string>商洛</string> 3113 </value> 3114 </SerializableDictionary> 3115 <SerializableDictionary> 3116 <key> 3117 <string>270100</string> 3118 </key> 3119 <value> 3120 <string>延安</string> 3121 </value> 3122 </SerializableDictionary> 3123 <SerializableDictionary> 3124 <key> 3125 <string>270110</string> 3126 </key> 3127 <value> 3128 <string>榆林</string> 3129 </value> 3130 </SerializableDictionary> 3131 <SerializableDictionary> 3132 <key> 3133 <string>270120</string> 3134 </key> 3135 <value> 3136 <string>杨凌</string> 3137 </value> 3138 </SerializableDictionary> 3139 <SerializableDictionary> 3140 <key> 3141 <string>270130</string> 3142 </key> 3143 <value> 3144 <string>兴平</string> 3145 </value> 3146 </SerializableDictionary> 3147 <SerializableDictionary> 3148 <key> 3149 <string>280020</string> 3150 </key> 3151 <value> 3152 <string>成都</string> 3153 </value> 3154 </SerializableDictionary> 3155 <SerializableDictionary> 3156 <key> 3157 <string>280030</string> 3158 </key> 3159 <value> 3160 <string>乐山</string> 3161 </value> 3162 </SerializableDictionary> 3163 <SerializableDictionary> 3164 <key> 3165 <string>280040</string> 3166 </key> 3167 <value> 3168 <string>泸州</string> 3169 </value> 3170 </SerializableDictionary> 3171 <SerializableDictionary> 3172 <key> 3173 <string>280050</string> 3174 </key> 3175 <value> 3176 <string>绵阳</string> 3177 </value> 3178 </SerializableDictionary> 3179 <SerializableDictionary> 3180 <key> 3181 <string>280060</string> 3182 </key> 3183 <value> 3184 <string>内江</string> 3185 </value> 3186 </SerializableDictionary> 3187 <SerializableDictionary> 3188 <key> 3189 <string>280070</string> 3190 </key> 3191 <value> 3192 <string>宜宾</string> 3193 </value> 3194 </SerializableDictionary> 3195 <SerializableDictionary> 3196 <key> 3197 <string>280080</string> 3198 </key> 3199 <value> 3200 <string>自贡</string> 3201 </value> 3202 </SerializableDictionary> 3203 <SerializableDictionary> 3204 <key> 3205 <string>280090</string> 3206 </key> 3207 <value> 3208 <string>攀枝花</string> 3209 </value> 3210 </SerializableDictionary> 3211 <SerializableDictionary> 3212 <key> 3213 <string>280100</string> 3214 </key> 3215 <value> 3216 <string>德阳</string> 3217 </value> 3218 </SerializableDictionary> 3219 <SerializableDictionary> 3220 <key> 3221 <string>280110</string> 3222 </key> 3223 <value> 3224 <string>广元</string> 3225 </value> 3226 </SerializableDictionary> 3227 <SerializableDictionary> 3228 <key> 3229 <string>280120</string> 3230 </key> 3231 <value> 3232 <string>遂宁</string> 3233 </value> 3234 </SerializableDictionary> 3235 <SerializableDictionary> 3236 <key> 3237 <string>280130</string> 3238 </key> 3239 <value> 3240 <string>南充</string> 3241 </value> 3242 </SerializableDictionary> 3243 <SerializableDictionary> 3244 <key> 3245 <string>280140</string> 3246 </key> 3247 <value> 3248 <string>眉山</string> 3249 </value> 3250 </SerializableDictionary> 3251 <SerializableDictionary> 3252 <key> 3253 <string>280150</string> 3254 </key> 3255 <value> 3256 <string>广安</string> 3257 </value> 3258 </SerializableDictionary> 3259 <SerializableDictionary> 3260 <key> 3261 <string>280160</string> 3262 </key> 3263 <value> 3264 <string>达州</string> 3265 </value> 3266 </SerializableDictionary> 3267 <SerializableDictionary> 3268 <key> 3269 <string>280170</string> 3270 </key> 3271 <value> 3272 <string>雅安</string> 3273 </value> 3274 </SerializableDictionary> 3275 <SerializableDictionary> 3276 <key> 3277 <string>280180</string> 3278 </key> 3279 <value> 3280 <string>巴中</string> 3281 </value> 3282 </SerializableDictionary> 3283 <SerializableDictionary> 3284 <key> 3285 <string>280190</string> 3286 </key> 3287 <value> 3288 <string>资阳</string> 3289 </value> 3290 </SerializableDictionary> 3291 <SerializableDictionary> 3292 <key> 3293 <string>280200</string> 3294 </key> 3295 <value> 3296 <string>西昌</string> 3297 </value> 3298 </SerializableDictionary> 3299 <SerializableDictionary> 3300 <key> 3301 <string>280210</string> 3302 </key> 3303 <value> 3304 <string>甘孜</string> 3305 </value> 3306 </SerializableDictionary> 3307 <SerializableDictionary> 3308 <key> 3309 <string>280220</string> 3310 </key> 3311 <value> 3312 <string>阿坝</string> 3313 </value> 3314 </SerializableDictionary> 3315 <SerializableDictionary> 3316 <key> 3317 <string>280230</string> 3318 </key> 3319 <value> 3320 <string>凉山</string> 3321 </value> 3322 </SerializableDictionary> 3323 <SerializableDictionary> 3324 <key> 3325 <string>280240</string> 3326 </key> 3327 <value> 3328 <string>峨眉</string> 3329 </value> 3330 </SerializableDictionary> 3331 <SerializableDictionary> 3332 <key> 3333 <string>280250</string> 3334 </key> 3335 <value> 3336 <string>简阳</string> 3337 </value> 3338 </SerializableDictionary> 3339 <SerializableDictionary> 3340 <key> 3341 <string>290020</string> 3342 </key> 3343 <value> 3344 <string>拉萨</string> 3345 </value> 3346 </SerializableDictionary> 3347 <SerializableDictionary> 3348 <key> 3349 <string>290030</string> 3350 </key> 3351 <value> 3352 <string>日喀则</string> 3353 </value> 3354 </SerializableDictionary> 3355 <SerializableDictionary> 3356 <key> 3357 <string>290040</string> 3358 </key> 3359 <value> 3360 <string>林芝</string> 3361 </value> 3362 </SerializableDictionary> 3363 <SerializableDictionary> 3364 <key> 3365 <string>290050</string> 3366 </key> 3367 <value> 3368 <string>山南</string> 3369 </value> 3370 </SerializableDictionary> 3371 <SerializableDictionary> 3372 <key> 3373 <string>290060</string> 3374 </key> 3375 <value> 3376 <string>昌都</string> 3377 </value> 3378 </SerializableDictionary> 3379 <SerializableDictionary> 3380 <key> 3381 <string>290070</string> 3382 </key> 3383 <value> 3384 <string>那曲</string> 3385 </value> 3386 </SerializableDictionary> 3387 <SerializableDictionary> 3388 <key> 3389 <string>290080</string> 3390 </key> 3391 <value> 3392 <string>阿里</string> 3393 </value> 3394 </SerializableDictionary> 3395 <SerializableDictionary> 3396 <key> 3397 <string>300020</string> 3398 </key> 3399 <value> 3400 <string>乌鲁木齐</string> 3401 </value> 3402 </SerializableDictionary> 3403 <SerializableDictionary> 3404 <key> 3405 <string>300030</string> 3406 </key> 3407 <value> 3408 <string>喀什</string> 3409 </value> 3410 </SerializableDictionary> 3411 <SerializableDictionary> 3412 <key> 3413 <string>300040</string> 3414 </key> 3415 <value> 3416 <string>克拉玛依</string> 3417 </value> 3418 </SerializableDictionary> 3419 <SerializableDictionary> 3420 <key> 3421 <string>300050</string> 3422 </key> 3423 <value> 3424 <string>伊犁</string> 3425 </value> 3426 </SerializableDictionary> 3427 <SerializableDictionary> 3428 <key> 3429 <string>300060</string> 3430 </key> 3431 <value> 3432 <string>阿克苏</string> 3433 </value> 3434 </SerializableDictionary> 3435 <SerializableDictionary> 3436 <key> 3437 <string>300070</string> 3438 </key> 3439 <value> 3440 <string>哈密</string> 3441 </value> 3442 </SerializableDictionary> 3443 <SerializableDictionary> 3444 <key> 3445 <string>300080</string> 3446 </key> 3447 <value> 3448 <string>石河子</string> 3449 </value> 3450 </SerializableDictionary> 3451 <SerializableDictionary> 3452 <key> 3453 <string>300090</string> 3454 </key> 3455 <value> 3456 <string>阿拉尔</string> 3457 </value> 3458 </SerializableDictionary> 3459 <SerializableDictionary> 3460 <key> 3461 <string>300100</string> 3462 </key> 3463 <value> 3464 <string>五家渠</string> 3465 </value> 3466 </SerializableDictionary> 3467 <SerializableDictionary> 3468 <key> 3469 <string>300110</string> 3470 </key> 3471 <value> 3472 <string>图木舒克</string> 3473 </value> 3474 </SerializableDictionary> 3475 <SerializableDictionary> 3476 <key> 3477 <string>300120</string> 3478 </key> 3479 <value> 3480 <string>昌吉回族自治州</string> 3481 </value> 3482 </SerializableDictionary> 3483 <SerializableDictionary> 3484 <key> 3485 <string>300130</string> 3486 </key> 3487 <value> 3488 <string>阿勒泰</string> 3489 </value> 3490 </SerializableDictionary> 3491 <SerializableDictionary> 3492 <key> 3493 <string>300140</string> 3494 </key> 3495 <value> 3496 <string>吐鲁番</string> 3497 </value> 3498 </SerializableDictionary> 3499 <SerializableDictionary> 3500 <key> 3501 <string>300150</string> 3502 </key> 3503 <value> 3504 <string>塔城</string> 3505 </value> 3506 </SerializableDictionary> 3507 <SerializableDictionary> 3508 <key> 3509 <string>300160</string> 3510 </key> 3511 <value> 3512 <string>和田</string> 3513 </value> 3514 </SerializableDictionary> 3515 <SerializableDictionary> 3516 <key> 3517 <string>300170</string> 3518 </key> 3519 <value> 3520 <string>克孜勒苏柯尔克孜自治州</string> 3521 </value> 3522 </SerializableDictionary> 3523 <SerializableDictionary> 3524 <key> 3525 <string>300180</string> 3526 </key> 3527 <value> 3528 <string>巴音郭楞蒙古自治州</string> 3529 </value> 3530 </SerializableDictionary> 3531 <SerializableDictionary> 3532 <key> 3533 <string>300190</string> 3534 </key> 3535 <value> 3536 <string>博尔塔拉蒙古自治州</string> 3537 </value> 3538 </SerializableDictionary> 3539 <SerializableDictionary> 3540 <key> 3541 <string>300200</string> 3542 </key> 3543 <value> 3544 <string>奎屯市</string> 3545 </value> 3546 </SerializableDictionary> 3547 <SerializableDictionary> 3548 <key> 3549 <string>300210</string> 3550 </key> 3551 <value> 3552 <string>乌苏</string> 3553 </value> 3554 </SerializableDictionary> 3555 <SerializableDictionary> 3556 <key> 3557 <string>310020</string> 3558 </key> 3559 <value> 3560 <string>昆明</string> 3561 </value> 3562 </SerializableDictionary> 3563 <SerializableDictionary> 3564 <key> 3565 <string>310030</string> 3566 </key> 3567 <value> 3568 <string>大理</string> 3569 </value> 3570 </SerializableDictionary> 3571 <SerializableDictionary> 3572 <key> 3573 <string>310040</string> 3574 </key> 3575 <value> 3576 <string>丽江</string> 3577 </value> 3578 </SerializableDictionary> 3579 <SerializableDictionary> 3580 <key> 3581 <string>310050</string> 3582 </key> 3583 <value> 3584 <string>玉溪</string> 3585 </value> 3586 </SerializableDictionary> 3587 <SerializableDictionary> 3588 <key> 3589 <string>310060</string> 3590 </key> 3591 <value> 3592 <string>曲靖</string> 3593 </value> 3594 </SerializableDictionary> 3595 <SerializableDictionary> 3596 <key> 3597 <string>310070</string> 3598 </key> 3599 <value> 3600 <string>保山</string> 3601 </value> 3602 </SerializableDictionary> 3603 <SerializableDictionary> 3604 <key> 3605 <string>310080</string> 3606 </key> 3607 <value> 3608 <string>昭通</string> 3609 </value> 3610 </SerializableDictionary> 3611 <SerializableDictionary> 3612 <key> 3613 <string>310090</string> 3614 </key> 3615 <value> 3616 <string>普洱</string> 3617 </value> 3618 </SerializableDictionary> 3619 <SerializableDictionary> 3620 <key> 3621 <string>310100</string> 3622 </key> 3623 <value> 3624 <string>临沧</string> 3625 </value> 3626 </SerializableDictionary> 3627 <SerializableDictionary> 3628 <key> 3629 <string>310110</string> 3630 </key> 3631 <value> 3632 <string>红河哈尼族彝族自治州</string> 3633 </value> 3634 </SerializableDictionary> 3635 <SerializableDictionary> 3636 <key> 3637 <string>310120</string> 3638 </key> 3639 <value> 3640 <string>文山壮族苗族自治州</string> 3641 </value> 3642 </SerializableDictionary> 3643 <SerializableDictionary> 3644 <key> 3645 <string>310130</string> 3646 </key> 3647 <value> 3648 <string>西双版纳傣族自治州</string> 3649 </value> 3650 </SerializableDictionary> 3651 <SerializableDictionary> 3652 <key> 3653 <string>310140</string> 3654 </key> 3655 <value> 3656 <string>德宏傣族景颇族自治州</string> 3657 </value> 3658 </SerializableDictionary> 3659 <SerializableDictionary> 3660 <key> 3661 <string>310150</string> 3662 </key> 3663 <value> 3664 <string>楚雄彝族自治州</string> 3665 </value> 3666 </SerializableDictionary> 3667 <SerializableDictionary> 3668 <key> 3669 <string>310160</string> 3670 </key> 3671 <value> 3672 <string>怒江傈傈族自治州</string> 3673 </value> 3674 </SerializableDictionary> 3675 <SerializableDictionary> 3676 <key> 3677 <string>310170</string> 3678 </key> 3679 <value> 3680 <string>迪庆藏族自治州</string> 3681 </value> 3682 </SerializableDictionary> 3683 <SerializableDictionary> 3684 <key> 3685 <string>310180</string> 3686 </key> 3687 <value> 3688 <string>思茅</string> 3689 </value> 3690 </SerializableDictionary> 3691 </SerializableDictionaryOfStringString>View Code
1.前程无忧
前程无忧我相信应该是很多园友找工作的首选,博主就是在这上面注册了简历,并且每次换工作都是在这上面取得了成功,感觉还挺不错,祝愿各位园友都能找到自己称心如意的工作,只要我们大家都一起努力应该都没有问题的。
下面介绍实现逻辑:
1 #region * 前程无忧 2 /// <summary> 3 /// 线程池启动调用的方法 4 /// </summary> 5 /// <param name="obj"></param> 6 private void Get51JobData(object obj) 7 { 8 string workAddress = this.txtAddress.Text.Trim();//工作地点 9 string workAddressId = string.Empty;//工作地点ID 10 string keyWord = this.txtKeyWord.Text.Trim();//关键词 11 string upperSalary = this.txtSalary1.Text.Trim();//薪水范围 12 string lowerSalary = this.txtSalary2.Text.Trim();//薪水范围 13 string mustKey = string.Empty;//是否包含关键词 14 15 jobInfoList2.Clear(); 16 curJobInfo2 = null; 17 dt2.Rows.Clear(); 18 this.Invoke((MethodInvoker)delegate 19 { 20 this.gcJob2.DataSource = dt2; 21 }); 22 Thread th = null;//搜索线程 23 if (th != null) 24 { 25 th.Abort(); 26 th = null; 27 } 28 29 //根据输入的城市找出城市ID 30 KeyValuePair<string, string> kv = dic2.FirstOrDefault(t => t.Value.Contains(workAddress)); 31 if (kv.Key == null) 32 { 33 XtraMessageBox.Show("无法搜索该工作地点", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); 34 return; 35 } 36 workAddressId = kv.Key; 37 //勾选包含关键词 38 if (this.chkMustKey.Checked) 39 { 40 mustKey = this.txtMustKey.Text.Trim(); 41 } 42 43 //调用接口 44 JobFactory tws = new JobFactory("51Job", workAddress, workAddressId, keyWord, upperSalary, lowerSalary, mustKey); 45 IJob job = tws.GetJob(); 46 if (job != null) 47 { 48 job.GetJobEnd -= new GetJobEndEventHandler(job_GetJob2End); 49 job.GetJobEnd += new GetJobEndEventHandler(job_GetJob2End); 50 th = new Thread(new ThreadStart(job.GetJobInfoList)); 51 th.IsBackground = true; 52 th.Start(); 53 } 54 } 55 56 /// <summary> 57 /// 表格增加一行数据 58 /// </summary> 59 /// <param name="o"></param> 60 /// <param name="e"></param> 61 private void job_GetJob2End(object o, JobInfo e) 62 { 63 this.Invoke((MethodInvoker)delegate 64 { 65 if (e != null) 66 { 67 jobInfoList2.Add(e); 68 curJobInfo2 = e; 69 this.gvJob2.AddNewRow(); 70 } 71 else 72 { 73 this.layoutControlGroup2.Enabled = true; 74 } 75 }); 76 } 77 78 /// <summary> 79 /// 表格增加行 80 /// </summary> 81 /// <param name="sender"></param> 82 /// <param name="e"></param> 83 private void gvJob2_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e) 84 { 85 try 86 { 87 DataRowView dr = this.gvJob2.GetRow(e.RowHandle) as DataRowView; 88 dr["Url"] = curJobInfo2.Url;//网站链接 89 dr["Position"] = curJobInfo2.Position;//职位名称 90 dr["Company"] = curJobInfo2.Company;//公司名称 91 dr["Nature"] = curJobInfo2.Nature;//公司性质 92 dr["Scale"] = curJobInfo2.Scale;//公司规模 93 dr["Salary"] = curJobInfo2.Salary;//月薪/年薪 94 dr["Address"] = curJobInfo2.Address;//工作地点 95 dr["Experience"] = curJobInfo2.Experience;//工作经验 96 dr["Education"] = curJobInfo2.Education;//最低学历 97 dr["Time"] = curJobInfo2.Time;//发布时间 98 99 this.gvJob2.UpdateCurrentRow(); 100 this.gvJob2.RefreshData(); 101 this.gvJob2.MoveLast(); 102 } 103 catch 104 { 105 XtraMessageBox.Show("添加行失败"); 106 } 107 } 108 109 /// <summary> 110 /// 双击行打开当前行链接 111 /// </summary> 112 /// <param name="sender"></param> 113 /// <param name="e"></param> 114 private void gcJob2_DoubleClick(object sender, EventArgs e) 115 { 116 string uri = this.gvJob2.GetFocusedDataRow()["Url"].ToString(); 117 System.Diagnostics.Process.Start(uri); 118 } 119 #endregion
以上三个函数的作用分别是线程池启动调用的方法、表格增加一行数据、表格增加行和双击行打开当前行链接四个方法,实现这四个方法即可获取前程无忧的数据,那么获取HTML内容和解析HTML需用另外一个类实现,实现这个类如下:
1 public class JobFrom51Job : IJob 2 { 3 #region * 私有字段 4 private string url = @"http://search.51job.com/jobsearch/search_result.php?"; 5 6 /// <summary> 7 /// 工作地点 8 /// </summary> 9 private string workAddress; 10 /// <summary> 11 /// 工作地点ID 12 /// </summary> 13 private string workAddressId; 14 /// <summary> 15 /// 关键词 16 /// </summary> 17 private string keyWord; 18 /// <summary> 19 /// 包含词 20 /// </summary> 21 private string mustKey; 22 #endregion 23 24 public JobFrom51Job(string workAddress, string workAddressId, string keyWord, string mustKey) 25 { 26 this.workAddress = workAddress; 27 this.workAddressId = workAddressId; 28 this.keyWord = keyWord; 29 this.mustKey = mustKey; 30 } 31 32 public event GetJobEndEventHandler GetJobEnd; 33 public void GetJobInfoList() 34 { 35 try 36 { 37 StringBuilder condition = new StringBuilder(); 38 condition.Append("jobarea=" + workAddressId); 39 if (!string.IsNullOrEmpty(keyWord)) 40 { 41 keyWord = System.Web.HttpUtility.UrlEncode(keyWord, Encoding.GetEncoding("gb2312")); 42 condition.Append("&keyword=" + keyWord); 43 } 44 condition.Append("&keywordtype=2"); 45 46 url = url + condition.ToString(); 47 string html = GetHtmlCode.GetByget(url, "gb2312"); 48 GetJobInfoFromPage(html); 49 50 int pageCount = 0; 51 //页面数量 52 string pageCountRegexStr = "(?<=name=\"jobid_count\"\\s*?value=\")\\d+(?=\">)"; 53 Regex pageCountRegex = new Regex(pageCountRegexStr); 54 pageCount = (int.Parse(pageCountRegex.Match(html).Value) + 29) / 30; 55 56 for (int i = 2; i <= pageCount; i++) 57 { 58 string url0 = url + string.Format("&curr_page={0}", i); 59 html = GetHtmlCode.GetByget(url0, "gb2312"); 60 GetJobInfoFromPage(html); 61 } 62 if (GetJobEnd != null) 63 { 64 GetJobEnd(null, null); 65 } 66 } 67 catch (Exception exMsg) 68 { 69 throw new Exception(exMsg.Message); 70 } 71 } 72 73 private void GetJobInfoFromPage(string pageStr) 74 { 75 try 76 { 77 pageStr = Regex.Replace(pageStr, "\\s", ""); 78 //职位所有信息 79 string jobInfoRegexStr = "(?<=<trclass=\"tr0\").+?(?=</tr>)"; 80 Regex jobInfoRegex = new Regex(jobInfoRegexStr); 81 MatchCollection jobInfoMC = jobInfoRegex.Matches(pageStr); 82 //-- 83 foreach (Match m in jobInfoMC) 84 { 85 if (m.Value.Contains(workAddress)) 86 { 87 //职位URL 88 string urlRegexStr = "(?<=<aadid=\"\"href=\").+?(?=\")"; 89 string url0 = Regex.Match(m.Value, urlRegexStr).Value; 90 GetJobInfoFromUrl(url0); 91 } 92 } 93 } 94 catch (Exception exMsg) 95 { 96 throw new Exception(exMsg.Message); 97 } 98 } 99 100 // 正则表达式过滤:正则表达式,要替换成的文本 101 private static readonly string[][] Filters = 102 { 103 new[] { @"(?is)<script.*?>.*?</script>", "" }, 104 new[] { @"(?is)<style.*?>.*?</style>", "" }, 105 new[] { @"(?is)<!--.*?-->", "" }, // 过滤Html代码中的注释 106 new[] { @"(?is)<footer.*?>.*?</footer>",""}, 107 new[] { "(?is) <div style=\"width:470px; padding-left:5px;\">.*?</div>",""}, 108 new[] { "(?is)<div id=\"top\">.*?</iframe> </div></div>",""}, 109 new[] { "(?is)<div class=\"grayline\" id=\"announcementbody\">.*?</li></ul> </div>",""} 110 }; 111 112 private void GetJobInfoFromUrl(string url) 113 { 114 try 115 { 116 JobInfo info = new JobInfo(); 117 //-- 118 string pageStr = GetHtmlCode.GetByget(url, "gb2312"); 119 if (string.IsNullOrEmpty(pageStr)) 120 { 121 return; 122 } 123 //-- 124 pageStr = pageStr.Replace("\r\n", "");//替换换行符 125 // 获取html,body标签内容 126 string body = string.Empty; 127 string bodyFilter = @"(?is)<body.*?</body>"; 128 Match m = Regex.Match(pageStr, bodyFilter); 129 if (m.Success) 130 { 131 body = m.ToString().Replace("<tr >", "<tr>").Replace("\r\n", ""); 132 } 133 // 过滤样式,脚本等不相干标签 134 foreach (var filter in Filters) 135 { 136 body = Regex.Replace(body, filter[0], filter[1]); 137 } 138 //-- 139 if (!string.IsNullOrEmpty(mustKey) && !body.Contains(mustKey)) 140 { 141 return; 142 } 143 body = Regex.Replace(body, "\\s", ""); 144 145 info.Url = url; 146 string basicInfoRegexStr0 = "<tdclass=\"sr_bt\"colspan=\"2\">(.*?)</td>"; //职位名称 147 string position = Regex.Match(body, basicInfoRegexStr0).Value; 148 if (string.IsNullOrEmpty(position)) 149 { 150 basicInfoRegexStr0 = "<tdclass=\"sr_bt\"colspan=\"3\">(.*?)</td>"; 151 position = Regex.Match(body, basicInfoRegexStr0).Value; 152 } 153 info.Position = string.IsNullOrEmpty(position) ? "" : position.Substring(position.IndexOf(">") + 1, position.IndexOf("</") - position.IndexOf(">") - 1); 154 155 string basicInfoRegexStr1 = ".html\">(.*?)</a>";//公司名称 156 string company = Regex.Match(body, basicInfoRegexStr1).Value; 157 info.Company = string.IsNullOrEmpty(company) ? "" : company.Substring(company.IndexOf(">") + 1, company.IndexOf("</a>") - company.IndexOf(">") - 1); 158 159 string basicInfoRegexStr2 = "工作地点:</td><tdclass=\"txt_2\">(.*?)</td>";//工作地点 160 string address = Regex.Match(body, basicInfoRegexStr2).Value; 161 info.Address = string.IsNullOrEmpty(address) ? "" : address.Substring(address.IndexOf("\">") + 2, address.LastIndexOf("</td>") - address.IndexOf("\">") - 2); 162 163 string basicInfoRegexStr3 = "公司性质:</strong> (.*?)<br><br><strong>";//公司性质 164 string nature = Regex.Match(body, basicInfoRegexStr3).Value; 165 if (string.IsNullOrEmpty(nature)) 166 { 167 basicInfoRegexStr3 = "公司行业:</strong> (.*?)<br><br><strong>"; 168 nature = Regex.Match(body, basicInfoRegexStr3).Value; 169 } 170 info.Nature = string.IsNullOrEmpty(nature) ? "" : nature.Substring(26, nature.IndexOf("<br>") - 26);//公司性质 171 172 string basicInfoRegexStr4 = "公司规模:</strong> (.*?)</td>";//公司规模 173 string scale = Regex.Match(body, basicInfoRegexStr4).Value; 174 info.Scale = string.IsNullOrEmpty(scale) ? "" : scale.Substring(26, scale.IndexOf("</td>") - 26); 175 176 string basicInfoRegexStr5 = "工作年限:</td><tdclass=\"txt_2\">(.*?)</td>";//工作经验 177 string experience = Regex.Match(body, basicInfoRegexStr5).Value; 178 info.Experience = string.IsNullOrEmpty(experience) ? "" : experience.Substring(experience.IndexOf("\">") + 2, experience.LastIndexOf("</td>") - experience.IndexOf("\">") - 2); 179 180 string basicInfoRegexStr6 = "学 历:</td><tdclass=\"txt_2\">(.*?)</td>";//学历 181 string education = Regex.Match(body, basicInfoRegexStr6).Value; 182 info.Education = string.IsNullOrEmpty(education) ? "" : education.Substring(education.IndexOf("\">") + 2, education.LastIndexOf("</td>") - education.IndexOf("\">") - 2); 183 184 string basicInfoRegexStr7 = "薪水范围:</td><tdclass=\"txt_2\">(.*?)</td>";//月薪 185 string salary = Regex.Match(body, basicInfoRegexStr7).Value; 186 info.Salary = string.IsNullOrEmpty(salary) ? "" : salary.Substring(salary.IndexOf("\">") + 2, salary.LastIndexOf("</td>") - salary.IndexOf("\">") - 2); 187 188 string basicInfoRegexStr8 = "发布日期:</td><tdclass=\"txt_2\">(.*?)</td>";//发布时间 189 string time = Regex.Match(body, basicInfoRegexStr8).Value; 190 info.Time = string.IsNullOrEmpty(time) ? "" : time.Substring(time.IndexOf("\">") + 2, time.LastIndexOf("</td>") - time.IndexOf("\">") - 2); ; 191 192 if (GetJobEnd != null) 193 { 194 GetJobEnd(pageStr, info); 195 } 196 } 197 catch (Exception exMsg) 198 { 199 throw new Exception(exMsg.Message); 200 } 201 } 202 }
以上这个类的作用是分别根据网址获取HTML内容,再根据正则表达式获取招聘相关信息,再通过函数截取相关字段的信息,再组装到前台界面,实现数据的显示,这个里面有一个逻辑就是动态每一条招聘信息的连接,再根据连接去获取HTML信息,相当于这中间有两层解析XML的过程。
2.智联招聘
智联招聘是我自己每次找工作的备选项,每次把前程无忧上的所有招聘信息全部看完后,就会在智联招聘上浏览下,感觉还挺不错的,不知各位园友有没有试下,不过会有很多与前程无忧是重复的招聘信息,所以还得靠自己去区分。
下面介绍实现逻辑:
1 public class JobFromZhiLian : IJob 2 { 3 #region 私有字段 4 private string url = @"http://sou.zhaopin.com/Jobs/SearchResult.ashx?"; 5 /// <summary> 6 /// 工作地点 7 /// </summary> 8 private string workAddress; 9 /// <summary> 10 /// 关键词 11 /// </summary> 12 private string keyWord; 13 /// <summary> 14 /// 工资范围 15 /// </summary> 16 private string upperSalary; 17 /// <summary> 18 /// 工资范围 19 /// </summary> 20 private string lowerSalary; 21 /// <summary> 22 /// 包含词 23 /// </summary> 24 private string mustKey; 25 #endregion 26 27 public JobFromZhiLian(string workAddress, string keyWord, string upperSalary, string lowerSalary, string mustKey) 28 { 29 this.workAddress = workAddress; 30 this.keyWord = keyWord; 31 this.upperSalary = upperSalary; 32 this.lowerSalary = lowerSalary; 33 this.mustKey = mustKey; 34 } 35 36 public event GetJobEndEventHandler GetJobEnd; 37 public void GetJobInfoList() 38 { 39 try 40 { 41 StringBuilder condition = new StringBuilder(); 42 workAddress = HttpUtility.UrlEncode(workAddress, Encoding.GetEncoding("utf-8")); 43 condition.Append("jl=" + workAddress); 44 if (!string.IsNullOrEmpty(keyWord)) 45 { 46 keyWord = HttpUtility.UrlEncode(keyWord, Encoding.GetEncoding("utf-8")); 47 condition.Append("&kw=" + keyWord); 48 } 49 condition.Append("&sm=1"); 50 if (!string.IsNullOrEmpty(upperSalary)) 51 { 52 condition.Append("&sf=" + upperSalary); 53 } 54 if (!string.IsNullOrEmpty(lowerSalary)) 55 { 56 condition.Append("&st=" + lowerSalary); 57 } 58 59 url = url + condition.ToString(); 60 string html = GetHtmlCode.GetByget(url, "utf-8"); 61 GetJobInfoFromPage(html); 62 63 //页面数量 64 string pageCountRegexStr = "(?<=onkeypress=\"zlapply.searchjob.enter2Page\\(this,event,)\\d+"; 65 Regex pageCountRegex = new Regex(pageCountRegexStr); 66 string pageCountStr = pageCountRegex.Match(html).Groups[0].Value; 67 int pageCount = 0; 68 int.TryParse(pageCountStr, out pageCount); 69 70 for (int i = 2; i <= pageCount; i++) 71 { 72 string url0 = url + string.Format("&p={0}", i); 73 html = GetHtmlCode.GetByget(url0, "utf-8"); 74 GetJobInfoFromPage(html); 75 } 76 if (GetJobEnd != null) 77 { 78 GetJobEnd(null, null); 79 } 80 } 81 catch (Exception exMsg) 82 { 83 throw new Exception(exMsg.Message); 84 } 85 } 86 87 88 // 正则表达式过滤:正则表达式,要替换成的文本 89 private static readonly string[][] Filters = 90 { 91 new[] { @"(?is)<script.*?>.*?</script>", "" }, 92 new[] { @"(?is)<style.*?>.*?</style>", "" }, 93 new[] { @"(?is)<!--.*?-->", "" } // 过滤Html代码中的注释 94 }; 95 96 private void GetJobInfoFromPage( string pageStr) 97 { 98 try 99 { 100 JobInfo info = new JobInfo(); 101 //-- 102 if (string.IsNullOrEmpty(pageStr)) 103 { 104 return; 105 } 106 //-- 107 pageStr = pageStr.Replace("\r\n", "");//替换换行符 108 // 获取html,body标签内容 109 string body = string.Empty; 110 string bodyFilter = @"(?is)<body.*?</body>"; 111 Match m = Regex.Match(pageStr, bodyFilter); 112 if (m.Success) 113 { 114 body = m.ToString().Replace("<tr >", "<tr>").Replace("\r\n", ""); 115 } 116 // 过滤样式,脚本等不相干标签 117 foreach (var filter in Filters) 118 { 119 body = Regex.Replace(body, filter[0], filter[1]); 120 } 121 ////-- 122 //if (!string.IsNullOrEmpty(mustKey) && !body.Contains(mustKey)) 123 //{ 124 // return; 125 //} 126 body = Regex.Replace(body, "\\s", ""); 127 bodyFilter = "(?is)<divclass=\"newlist_list_content\"id=\"newlist_list_content_table\">.*?</dd></dl></div></div></div>"; 128 Match m1 = Regex.Match(body, bodyFilter); 129 if (m1.Success) 130 { 131 body = m1.ToString(); 132 } 133 134 135 136 137 //info.Url = xurl; 138 139 if (GetJobEnd != null) 140 { 141 GetJobEnd(pageStr, info); 142 } 143 144 //pageStr = Regex.Replace(pageStr, "\\s| |<br>|<strong>|</strong>|<b>|</b>", ""); 145 ////职位所有信息 146 //string jobInfoRegexStr = "(?<=<tableclass=\"search-result-tab\">)[\\S\\s]+?(?=</table>)"; 147 //Regex jobInfoRegex = new Regex(jobInfoRegexStr); 148 //MatchCollection jobInfoMC = jobInfoRegex.Matches(pageStr); 149 //foreach (Match m in jobInfoMC) 150 //{ 151 // if (!string.IsNullOrEmpty(mustKey) && !m.Value.Contains(mustKey)) 152 // { 153 // return; 154 // } 155 156 // JobInfo info = new JobInfo(); 157 158 // //职位名称,url和公司名称 159 // string basicInfoRegexStr = "(?<=<ahref=\")([\\w.:+?()/%=#&]+)\"target=\"_blank\".*?>([\\s\\S]+?)(?=</a>)"; 160 // //地点、公司性质、公司规模、经验、学历、职位月薪 161 // string basicInfoRegexStr0 = "(?<=地点:)[-/\\w]+(?=</span>)"; 162 // string basicInfoRegexStr1 = "(?<=公司性质:)[-/\\w]+(?=</span>)"; 163 // string basicInfoRegexStr2 = "(?<=公司规模:)[-/\\w]+(?=</span>)"; 164 // string basicInfoRegexStr3 = "(?<=经验:)[-/\\w]+(?=</span>)"; 165 // string basicInfoRegexStr4 = "(?<=学历:)[-/\\w]+(?=</span>)"; 166 // string basicInfoRegexStr5 = "(?<=职位月薪:)[-/\\w]+(?=</span>)"; 167 // //发布时间 168 // string timeInfoRegexStr = "(?<=releasetime\">)\\d{1,2}-\\d{1,2}-\\d{1,2}"; 169 170 // Regex basicInfoRegex = new Regex(basicInfoRegexStr); 171 // MatchCollection basicInfoMC = basicInfoRegex.Matches(m.Value); 172 // info.Url = basicInfoMC[0].Groups[1].Value; 173 // info.Position = basicInfoMC[0].Groups[2].Value; 174 // info.Company = basicInfoMC[1].Groups[2].Value; 175 // Regex basicInfoRegex0 = new Regex(basicInfoRegexStr0); 176 // info.Address = new Regex(basicInfoRegexStr0).Match(m.Value).Value; 177 // info.Nature = new Regex(basicInfoRegexStr1).Match(m.Value).Value; 178 // info.Scale = new Regex(basicInfoRegexStr2).Match(m.Value).Value; 179 // info.Experience = new Regex(basicInfoRegexStr3).Match(m.Value).Value; 180 // info.Education = new Regex(basicInfoRegexStr4).Match(m.Value).Value; 181 // info.Salary = new Regex(basicInfoRegexStr5).Match(m.Value).Value; 182 // Regex timeInfoRegex = new Regex(timeInfoRegexStr); 183 // info.Time = timeInfoRegex.Match(m.Value).Value; 184 185 186 // if (GetJobEnd != null) 187 // { 188 // GetJobEnd(pageStr, info); 189 // } 190 //} 191 } 192 catch (Exception exMsg) 193 { 194 throw new Exception(exMsg.Message); 195 } 196 } 197 }
以上为智联招聘解析HTML相关类,以上逻辑中正则表达式还在完善中,还未完全实现成功,正则表达式还有问题。
3.猎聘网
猎聘网也是最近一两年才兴起的,這个网站上基本上都是很多猎头发布的信息,开的工资大多是都是十多二十万年薪的岗位,只要你具备這个实力可以去這个网站看看,应该会有所收获的,不过這个网站也有部分企业自己发布的招聘信息,如果前面两个网站都没有看到自己满意的求职信息,那么這个网站也可以是自己求职的一个补充,不知各位博友是不是支持我这种观点。
下面介绍实现逻辑:
1 public class JobFromLiePin : IJob 2 { 3 #region * 私有字段 4 private string url = @"http://www.liepin.com/zhaopin/?"; 5 6 //基本信息 7 private string basicInfoRegexStr = "<a title=[\\s\\S]+?</a>"; 8 9 /// <summary> 10 /// 工作地点 11 /// </summary> 12 private string workAddress; 13 /// <summary> 14 /// 工作地点ID 15 /// </summary> 16 private string workAddressId; 17 /// <summary> 18 /// 关键词 19 /// </summary> 20 private string keyWord; 21 /// <summary> 22 /// 包含词 23 /// </summary> 24 private string mustKey; 25 #endregion 26 27 public JobFromLiePin(string workAddress, string workAddressId, string keyWord, string mustKey) 28 { 29 this.workAddress = workAddress; 30 this.workAddressId = workAddressId; 31 this.keyWord = keyWord; 32 this.mustKey = mustKey; 33 } 34 35 public event GetJobEndEventHandler GetJobEnd; 36 public void GetJobInfoList() 37 { 38 try 39 { 40 StringBuilder condition = new StringBuilder(); 41 condition.AppendFormat("dqs={0}", workAddressId); 42 condition.Append("&searchField=3"); 43 if (!string.IsNullOrEmpty(keyWord)) 44 { 45 keyWord = HttpUtility.UrlEncode(keyWord, Encoding.GetEncoding("utf-8")); 46 condition.Append("&key=" + keyWord); 47 } 48 condition.Append("&pubTime=30"); 49 string xurl = string.Empty; 50 for (int i = 0; i < 100; i++) 51 { 52 if (i > 0) 53 { 54 xurl = url + condition.ToString() + "&curPage=" + i; 55 } 56 else 57 { 58 xurl = url + condition.ToString(); 59 } 60 string html = GetHtmlCode.GetByget(xurl, "utf-8"); 61 if (string.IsNullOrEmpty(html)) 62 { 63 break; 64 } 65 GetJobInfoFromPage(html); 66 } 67 } 68 catch (Exception exMsg) 69 { 70 throw new Exception(exMsg.Message); 71 } 72 } 73 74 private void GetJobInfoFromPage(string pageStr) 75 { 76 try 77 { 78 MatchCollection ms = Regex.Matches(pageStr, basicInfoRegexStr); 79 //--url 80 string urlRegex = "(?<=href=\")([\\w.:+?()/%=#&]+)"; 81 //-- 82 foreach (Match m in ms) 83 { 84 if (m.Value.Contains(workAddress)) 85 { 86 string url0 = Regex.Match(m.Value, urlRegex).Value; 87 GetJobInfoFromUrl(url0); 88 } 89 } 90 if (GetJobEnd != null) 91 { 92 GetJobEnd(null, null); 93 } 94 } 95 catch (Exception exMsg) 96 { 97 throw new Exception(exMsg.Message); 98 } 99 } 100 101 // 正则表达式过滤:正则表达式,要替换成的文本 102 private static readonly string[][] Filters = 103 { 104 new[] { @"(?is)<script.*?>.*?</script>", "" }, 105 new[] { @"(?is)<style.*?>.*?</style>", "" }, 106 new[] { @"(?is)<!--.*?-->", "" }, // 过滤Html代码中的注释 107 new[] { @"(?is)<footer.*?>.*?</footer>",""}, 108 //new[] { "(?is)<div class=\"job-require bottom-job-require\">.*?</div></div>",""} 109 new[] { @"(?is)<h3>常用链接:.*?</ul>",""} 110 }; 111 112 private void GetJobInfoFromUrl(string url) 113 { 114 try 115 { 116 JobInfo info = new JobInfo(); 117 //-- 118 string pageStr = GetHtmlCode.GetByget(url, "utf-8"); 119 if (string.IsNullOrEmpty(pageStr)) 120 { 121 return; 122 } 123 //-- 124 pageStr = pageStr.Replace("\r\n", "");//替换换行符 125 // 获取html,body标签内容 126 string body = string.Empty; 127 string bodyFilter = @"(?is)<body.*?</body>"; 128 Match m = Regex.Match(pageStr, bodyFilter); 129 if (m.Success) 130 { 131 body = m.ToString().Replace("<tr >", "<tr>").Replace("\r\n", ""); 132 } 133 // 过滤样式,脚本等不相干标签 134 foreach (var filter in Filters) 135 { 136 body = Regex.Replace(body, filter[0], filter[1]); 137 } 138 //-- 139 if (!string.IsNullOrEmpty(mustKey) && !body.Contains(mustKey)) 140 { 141 return; 142 } 143 body = Regex.Replace(body, "\\s", ""); 144 145 info.Url = url; 146 147 string basicInfoRegexStr0 = "<h1title=([\\s\\S]+?)>(.*?)</h1>"; //职位名称 148 string position = Regex.Match(body, basicInfoRegexStr0).Value; 149 info.Position = string.IsNullOrEmpty(position) ? "" : position.Substring(position.IndexOf(">") + 1, position.IndexOf("</") - position.IndexOf(">") - 1);//职位名称 150 151 string basicInfoRegexStr1 = "</h1><h3>(.*?)</h3>";//公司名称 152 string company = Regex.Match(body, basicInfoRegexStr1).Value; 153 info.Company = string.IsNullOrEmpty(company) ? "" : company.Substring(company.IndexOf("<h3>") + 4, company.IndexOf("</h3>") - company.IndexOf("<h3>") - 4);//公司名称 154 155 string basicInfoRegexStr2 = "<divclass=\"resumeclearfix\"><span>(.*?)</span>";//工作地点 156 string address = Regex.Match(body, basicInfoRegexStr2).Value; 157 info.Address = string.IsNullOrEmpty(address) ? "" : address.Substring(address.IndexOf("<span>") + 6, address.IndexOf("</") - address.IndexOf("<span>") - 6);//工作地点 158 159 string basicInfoRegexStr3 = "<li><span>企业性质:</span>(.*?)</li>";//公司性质 160 string nature = Regex.Match(body, basicInfoRegexStr3).Value; 161 info.Nature = string.IsNullOrEmpty(nature) ? "" : nature.Substring(nature.IndexOf("</span>") + 7, nature.IndexOf("</li>") - nature.IndexOf("</span>") - 7);//公司性质 162 163 if (string.IsNullOrEmpty(info.Nature)) 164 { 165 string basicInfoRegexStr3_1 = "<br><span>性质:</span>(.*?)<br>"; 166 string nature_1 = Regex.Match(body, basicInfoRegexStr3_1).Value; 167 info.Nature = string.IsNullOrEmpty(nature_1) ? "" : nature_1.Substring(nature_1.IndexOf("</span>") + 7, nature_1.LastIndexOf("<br>") - nature_1.IndexOf("</span>") - 7);//公司性质 168 } 169 170 string basicInfoRegexStr4 = "<li><span>企业规模:</span>(.*?)</li>";//公司规模 171 string scale = Regex.Match(body, basicInfoRegexStr4).Value; 172 info.Scale = string.IsNullOrEmpty(scale) ? "" : scale.Substring(scale.IndexOf("</span>") + 7, scale.IndexOf("</li>") - scale.IndexOf("</span>") - 7);//公司规模 173 174 if (string.IsNullOrEmpty(info.Scale)) 175 { 176 string basicInfoRegexStr4_1 = "<br><span>规模:</span>(.*?)<br>"; 177 string scale_1 = Regex.Match(body, basicInfoRegexStr4_1).Value; 178 info.Scale = info.Nature = string.IsNullOrEmpty(scale_1) ? "" : scale_1.Substring(scale_1.IndexOf("</span>") + 7, scale_1.LastIndexOf("<br>") - scale_1.IndexOf("</span>") - 7);//公司规模 179 } 180 181 string basicInfoRegexStr5 = "<spanclass=\"noborder\">(.*?)</span>";//工作经验 182 string experience = Regex.Match(body, basicInfoRegexStr5).Value; 183 info.Experience = string.IsNullOrEmpty(experience) ? "" : experience.Substring(experience.IndexOf(">") + 1, experience.IndexOf("</") - experience.IndexOf(">") - 1);//工作经验 184 185 string basicInfoRegexStr6 = "</span><span>(.*?)</span><spanclass=\"noborder\">";//最低学历 186 string education = Regex.Match(body, basicInfoRegexStr6).Value; 187 info.Education = string.IsNullOrEmpty(education) ? "" : education.Substring(education.IndexOf("<span>") + 6, education.IndexOf("</span><spanclass=") - education.IndexOf("<span>") - 6);//最低学历 188 189 string basicInfoRegexStr7 = "<pclass=\"job-main-title\">(.*?)<";//月薪 190 string salary = Regex.Match(body, basicInfoRegexStr7).Value; 191 info.Salary = string.IsNullOrEmpty(salary) ? "" : salary.Substring(salary.IndexOf(">") + 1, salary.LastIndexOf("<") - salary.IndexOf(">") - 1);//月薪 192 193 string timeInfoRegexStr = "<pclass=\"release-time\">发布时间:<em>(.*?)</em></p>";//发布时间 194 string time = Regex.Match(body, timeInfoRegexStr).Value; 195 info.Time = string.IsNullOrEmpty(time) ? "" : time.Substring(time.IndexOf("<em>") + 4, time.IndexOf("</em>") - time.IndexOf("<em>") - 4);//发布时间 196 197 if (GetJobEnd != null) 198 { 199 GetJobEnd(pageStr, info); 200 } 201 } 202 catch (Exception exMsg) 203 { 204 throw new Exception(exMsg.Message); 205 } 206 } 207 }
以上为解析猎聘网招聘信息的类。以下为猎聘网解析出的数据:
后记
个人在整个开发过程中遇到最大的难点还是利用正则表达式提取HTML相关字段的信息,这个对于我来说是最大的难题,因为我对正则表达式不是很熟,所以在这个过程是非常痛苦的,也许现在用到的正则表达式不是最好的,还望园友提出更好的解决方案,或则指出正则表达式的问题,这个程序最大的难题就在这里,如有兴趣一起加QQ群:(186841119),参与谈论和学习交流。