-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
1214 lines (1013 loc) · 112 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Yaohuiye's blog</title>
<subtitle>念念不忘,必有回响</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="http://yoursite.com/"/>
<updated>2017-10-25T15:59:03.000Z</updated>
<id>http://yoursite.com/</id>
<author>
<name>Yaohuiye</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>Flask入门Demo</title>
<link href="http://yoursite.com/2017/10/25/python-flask-start/"/>
<id>http://yoursite.com/2017/10/25/python-flask-start/</id>
<published>2017-10-25T15:50:50.000Z</published>
<updated>2017-10-25T15:59:03.000Z</updated>
<content type="html"><![CDATA[<h3 id="虚拟环境"><a href="#虚拟环境" class="headerlink" title="虚拟环境"></a>虚拟环境</h3><blockquote>
<p>在虚拟环境中可以安装私有包,而不会影响系统中安装的全局解释器。避免包的混乱和版本的冲突。</p>
</blockquote>
<h4 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h4><ul>
<li>在mac下执行命令</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sudo easy_install virtualenv</div></pre></td></tr></table></figure>
<h3 id="demo"><a href="#demo" class="headerlink" title="demo"></a>demo</h3><p>1、 创建项目文件夹<strong>coder_home</strong></p>
<p>2、 为项目创建虚拟环境(项目中会有一个venv文件夹)</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">$ cd coder_home</div><div class="line">$ virtualenv venv -p=python3.6</div></pre></td></tr></table></figure>
<a id="more"></a>
<p>3、 激活虚拟环境</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ source venv/bin/activate</div></pre></td></tr></table></figure>
<p>4、 安装flask环境.使用virtualevn工具创建虚拟环境时会自动安装pip</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ pip3 install flask</div></pre></td></tr></table></figure>
<p>5、 在项目下创建hello.py</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div></pre></td><td class="code"><pre><div class="line">from flask import Flask</div><div class="line"></div><div class="line">app = Flask(__name__)</div><div class="line"></div><div class="line">@app.route('/')</div><div class="line">def index():</div><div class="line"> user_agent = request.headers.get('User-Agent')</div><div class="line"> return '<h1>Hello World. Your browser is %s</h1>' % user_agent</div><div class="line"></div><div class="line">@app.route('/user/<name>')</div><div class="line">def user(name):</div><div class="line"> return '<h1>Hello, %s</h1>' % name</div><div class="line"></div><div class="line">if __name__ == '__main__':</div><div class="line"> app.run(debug=True)</div></pre></td></tr></table></figure>
<p>6、 启动</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ python hello.py</div></pre></td></tr></table></figure>
<p>7、 运行</p>
<p>输入<a href="http://localhost:5000访问" target="_blank" rel="external">http://localhost:5000访问</a></p>
<h3 id="示例项目"><a href="#示例项目" class="headerlink" title="示例项目"></a>示例项目</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">https://github.com/miguelgrinberg/flasky.git</div></pre></td></tr></table></figure>
]]></content>
<summary type="html">
<h3 id="虚拟环境"><a href="#虚拟环境" class="headerlink" title="虚拟环境"></a>虚拟环境</h3><blockquote>
<p>在虚拟环境中可以安装私有包,而不会影响系统中安装的全局解释器。避免包的混乱和版本的冲突。</p>
</blockquote>
<h4 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h4><ul>
<li>在mac下执行命令</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sudo easy_install virtualenv</div></pre></td></tr></table></figure>
<h3 id="demo"><a href="#demo" class="headerlink" title="demo"></a>demo</h3><p>1、 创建项目文件夹<strong>coder_home</strong></p>
<p>2、 为项目创建虚拟环境(项目中会有一个venv文件夹)</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">$ cd coder_home</div><div class="line">$ virtualenv venv -p=python3.6</div></pre></td></tr></table></figure>
</summary>
<category term="python" scheme="http://yoursite.com/categories/python/"/>
<category term="python" scheme="http://yoursite.com/tags/python/"/>
<category term="flask" scheme="http://yoursite.com/tags/flask/"/>
</entry>
<entry>
<title>Python语言之Re库学习</title>
<link href="http://yoursite.com/2017/03/24/python-re/"/>
<id>http://yoursite.com/2017/03/24/python-re/</id>
<published>2017-03-24T04:12:03.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<h3 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h3><p>Re库是Python的标准库,主要用于字符串匹配</p>
<h3 id="导入模块"><a href="#导入模块" class="headerlink" title="导入模块"></a>导入模块</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">import Re</div></pre></td></tr></table></figure>
<h3 id="表示类型"><a href="#表示类型" class="headerlink" title="表示类型"></a>表示类型</h3><pre><code>raw string原生字符串类型:r'text'。当正则表达式中包含转义符时,使用raw string
</code></pre><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">r'[1-9]\d{5}'</div></pre></td></tr></table></figure>
<a id="more"></a>
<h3 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h3><h4 id="函数式用法:一次性操作"><a href="#函数式用法:一次性操作" class="headerlink" title="函数式用法:一次性操作"></a>函数式用法:一次性操作</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">match = re.search(r'[1-d]\d{5}','Hello 2345678')</div></pre></td></tr></table></figure>
<h4 id="面向对象用法:编译后的多次操作"><a href="#面向对象用法:编译后的多次操作" class="headerlink" title="面向对象用法:编译后的多次操作"></a>面向对象用法:编译后的多次操作</h4><ul>
<li>将正则表达式的字符串形式编译成正则表达式对象<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">regex = re.compile(pattern,flags=0)</div></pre></td></tr></table></figure>
</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">regex = re.compile(r'[1-d]\d{5}')</div><div class="line">match = regex.search('Hello 2345678')</div></pre></td></tr></table></figure>
<h3 id="功能函数"><a href="#功能函数" class="headerlink" title="功能函数"></a>功能函数</h3><ul>
<li><p>re.search(pattern,string,flags=0)<br> 在字符串中搜索匹配正则的第一个位置,返回match对象</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">match = re.search(r'[1-d]\d{5}','Hello 2345678')</div><div class="line">if match:</div><div class="line"> print(match.group(0))</div></pre></td></tr></table></figure>
</li>
<li><p>re.match(pattern,string,flags=0)<br> 从字符串的开始位置起匹配正则表达式,返回match对象</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">match = re.match(r'[1-9]\d{5}','100081')</div><div class="line">if match:</div><div class="line"> print(match.group(0))</div></pre></td></tr></table></figure>
</li>
<li><p>re.findall(pattern,string,flags=0)<br> 以列表类型返回全部能匹配的子串</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ls = re.findall(r'[1-9]\d{5}','100081 100065')</div></pre></td></tr></table></figure>
</li>
<li><p>re.split(pattern,string,maxsplit=0,flags=0)<br> 将字符串按照正则匹配结果进行分割,返回列表类型</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">ls = re.split(r'[1-9]\d{5}','Hello100081 sd100065 sd',maxsplit=2)</div></pre></td></tr></table></figure>
</li>
<li><p>re.finditer(pattern,string,flags=0)<br> 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">for m in re.finditer(r'[1-9]\d{5}','Hello100081 sd100065 sd'):</div><div class="line"> if m:</div><div class="line"> print(m.group(0))</div></pre></td></tr></table></figure>
</li>
<li><p>re.sub(pattern,repl,string,count=0,flags=0)<br> 在一个字符串中替换所有匹配正则的子串,返回替换后的字符串</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">re.sub(r'[1-9]\d{5}',':zipcode','Hello100081 sd100065 sd',count=1)</div></pre></td></tr></table></figure>
</li>
<li><p>参数说明</p>
<ul>
<li>pattern:正则表达式</li>
<li>string:待匹配的字符串</li>
<li>repl:替换匹配字符串的字符串</li>
<li>count:匹配的最大替换次数</li>
<li>maxsplit:最大分割数,剩余部分作为最后一个元素输出</li>
<li>flags:正则表达式使用时的控制标记<ul>
<li>re.I(re.IGNORECASE):忽略大小写</li>
<li>re.M(re.MULTILINE):正则中的^操作符能够将给定字符串的每行作为匹配的开始</li>
<li>re.S(re.DOTALL):正则中的.操作符能够匹配所有字符,默认匹配除换行外的所有字符</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="match对象"><a href="#match对象" class="headerlink" title="match对象"></a>match对象</h3><h4 id="属性"><a href="#属性" class="headerlink" title="属性"></a>属性</h4><ul>
<li>.string:待匹配的文本</li>
<li>.re:匹配时使用的正则</li>
<li>.pos:正则搜索文本的开始位置</li>
<li>.endpos:正则搜索文本的结束位置</li>
</ul>
<h4 id="方法"><a href="#方法" class="headerlink" title="方法"></a>方法</h4><ul>
<li>.group(0):获取匹配后的字符串</li>
<li>.start():匹配字符串在原始字符串的开始位置</li>
<li>.end():匹配字符串在原始字符串的结束位置</li>
<li>.span():返回(开始位置,结束位置)</li>
</ul>
<h4 id="贪婪匹配和最小匹配"><a href="#贪婪匹配和最小匹配" class="headerlink" title="贪婪匹配和最小匹配"></a>贪婪匹配和最小匹配</h4><ul>
<li><p>Re库默认采用贪婪匹配,即输出匹配最长的子串</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">match = re.search(r'PY.*N','PYANBNCNDN')</div><div class="line">match.group(0)</div></pre></td></tr></table></figure>
<p>结果:’PYANBNCNDN’</p>
</li>
<li><p>最小匹配,即输出匹配最短的子串</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">match = re.search(r'PY.*?N','PYANBNCNDN')</div><div class="line">match.group(0)</div></pre></td></tr></table></figure>
<p>结果:’PYAN’</p>
</li>
</ul>
<h4 id="最小匹配操作符"><a href="#最小匹配操作符" class="headerlink" title="最小匹配操作符"></a>最小匹配操作符</h4><ul>
<li>*?:前一个字符0次或无限次扩展,最小匹配</li>
<li>+?:前一个字符1次或无限次扩展,最小匹配</li>
<li>??:前一个字符0次或1次扩展,最小匹配</li>
<li>{m,n}?:扩展前一个字符m至n次(含n),最小匹配</li>
</ul>
<h3 id="学习参考"><a href="#学习参考" class="headerlink" title="学习参考"></a>学习参考</h3><p>学习参考于中国大学imooc课程:嵩天老师的《Python网络爬虫与信息提取》</p>
]]></content>
<summary type="html">
<h3 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h3><p>Re库是Python的标准库,主要用于字符串匹配</p>
<h3 id="导入模块"><a href="#导入模块" class="headerlink" title="导入模块"></a>导入模块</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">import Re</div></pre></td></tr></table></figure>
<h3 id="表示类型"><a href="#表示类型" class="headerlink" title="表示类型"></a>表示类型</h3><pre><code>raw string原生字符串类型:r&apos;text&apos;。当正则表达式中包含转义符时,使用raw string
</code></pre><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">r&apos;[1-9]\d&#123;5&#125;&apos;</div></pre></td></tr></table></figure>
</summary>
<category term="python" scheme="http://yoursite.com/categories/python/"/>
<category term="python" scheme="http://yoursite.com/tags/python/"/>
<category term="re" scheme="http://yoursite.com/tags/re/"/>
</entry>
<entry>
<title>常用的正则表达式</title>
<link href="http://yoursite.com/2017/03/23/learn-regex/"/>
<id>http://yoursite.com/2017/03/23/learn-regex/</id>
<published>2017-03-23T03:16:26.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<h3 id="正则表达式常用字符"><a href="#正则表达式常用字符" class="headerlink" title="正则表达式常用字符"></a>正则表达式常用字符</h3><table>
<thead>
<tr>
<th style="text-align:left">操作符</th>
<th style="text-align:left">说明</th>
<th style="text-align:left">实例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">.</td>
<td style="text-align:left">任何单个字符</td>
<td style="text-align:left">.*,表示匹配任意字符</td>
</tr>
<tr>
<td style="text-align:left">[^]</td>
<td style="text-align:left">非字符集,对单个字符给出排除范围</td>
<td style="text-align:left">[^abc],表示非a或b或c的单个字符</td>
</tr>
<tr>
<td style="text-align:left">*</td>
<td style="text-align:left">前一个字符的0次或多次</td>
<td style="text-align:left">abc*,表示ab、abc、abcc、abccc等</td>
</tr>
<tr>
<td style="text-align:left">+</td>
<td style="text-align:left">前一个字符的1次或多次</td>
<td style="text-align:left">abc+,表示abc、abcc、abccc等</td>
</tr>
<tr>
<td style="text-align:left">?</td>
<td style="text-align:left">前一个字符的0次或1次</td>
<td style="text-align:left">abc?,表示ab、abc</td>
</tr>
<tr>
<td style="text-align:left">|</td>
<td style="text-align:left">或,左右表达式任意一个</td>
<td style="text-align:left">abc|edf,表示abc或edf</td>
</tr>
<tr>
<td style="text-align:left">{m}</td>
<td style="text-align:left">前一个字符m次</td>
<td style="text-align:left">ab{2}c,表示abbc</td>
</tr>
<tr>
<td style="text-align:left">{m,n}</td>
<td style="text-align:left">前一个字符m至n次</td>
<td style="text-align:left">ab{1,2}c,表示abc、abbc</td>
</tr>
<tr>
<td style="text-align:left">^</td>
<td style="text-align:left">匹配字符串开头</td>
<td style="text-align:left">^abc,表示abc且在一个字符串的开头</td>
</tr>
<tr>
<td style="text-align:left">$</td>
<td style="text-align:left">匹配字符串结尾</td>
<td style="text-align:left">abc%,表示abc且在一个字符串的结尾</td>
</tr>
<tr>
<td style="text-align:left">()</td>
<td style="text-align:left">分组标记,内部只能使用|操作符</td>
<td style="text-align:left">(abc)表示abc,(abc|def)表示abc、def</td>
</tr>
<tr>
<td style="text-align:left">\d</td>
<td style="text-align:left">数字,等价于[0-9]</td>
<td style="text-align:left">.*,表示匹配任意字符</td>
</tr>
<tr>
<td style="text-align:left">\w</td>
<td style="text-align:left">单词字符,等价于[A-Za-z0-9]</td>
<td style="text-align:left">.*,表示匹配任意字符</td>
</tr>
</tbody>
</table>
<a id="more"></a>
<h3 id="举例说明"><a href="#举例说明" class="headerlink" title="举例说明"></a>举例说明</h3><h4 id="整数形式的字符串"><a href="#整数形式的字符串" class="headerlink" title="整数形式的字符串"></a>整数形式的字符串</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">^-?\d+$</div></pre></td></tr></table></figure>
<h4 id="正整数形式的字符串"><a href="#正整数形式的字符串" class="headerlink" title="正整数形式的字符串"></a>正整数形式的字符串</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">^[0-9]*[0-9]*$</div></pre></td></tr></table></figure>
<h4 id="英文字符组成的字符串"><a href="#英文字符组成的字符串" class="headerlink" title="英文字符组成的字符串"></a>英文字符组成的字符串</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">^[A-Za-z]+$</div></pre></td></tr></table></figure>
<h4 id="26个字母的字母和数字组成的字符串"><a href="#26个字母的字母和数字组成的字符串" class="headerlink" title="26个字母的字母和数字组成的字符串"></a>26个字母的字母和数字组成的字符串</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">^[A-Za-z0-9]+$</div></pre></td></tr></table></figure>
<h4 id="中国境内邮政编码6位"><a href="#中国境内邮政编码6位" class="headerlink" title="中国境内邮政编码6位"></a>中国境内邮政编码6位</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[1-9]\d{5}</div></pre></td></tr></table></figure>
<h4 id="中文字符"><a href="#中文字符" class="headerlink" title="中文字符"></a>中文字符</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[\u4e00-\u9fa5]</div></pre></td></tr></table></figure>
<h4 id="IP地址"><a href="#IP地址" class="headerlink" title="IP地址"></a>IP地址</h4><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">^(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]){1}$</div></pre></td></tr></table></figure>
<h3 id="学习参考"><a href="#学习参考" class="headerlink" title="学习参考"></a>学习参考</h3><p>学习参考于中国大学imooc课程:嵩天老师的《Python网络爬虫与信息提取》</p>
]]></content>
<summary type="html">
<h3 id="正则表达式常用字符"><a href="#正则表达式常用字符" class="headerlink" title="正则表达式常用字符"></a>正则表达式常用字符</h3><table>
<thead>
<tr>
<th style="text-align:left">操作符</th>
<th style="text-align:left">说明</th>
<th style="text-align:left">实例</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">.</td>
<td style="text-align:left">任何单个字符</td>
<td style="text-align:left">.*,表示匹配任意字符</td>
</tr>
<tr>
<td style="text-align:left">[^]</td>
<td style="text-align:left">非字符集,对单个字符给出排除范围</td>
<td style="text-align:left">[^abc],表示非a或b或c的单个字符</td>
</tr>
<tr>
<td style="text-align:left">*</td>
<td style="text-align:left">前一个字符的0次或多次</td>
<td style="text-align:left">abc*,表示ab、abc、abcc、abccc等</td>
</tr>
<tr>
<td style="text-align:left">+</td>
<td style="text-align:left">前一个字符的1次或多次</td>
<td style="text-align:left">abc+,表示abc、abcc、abccc等</td>
</tr>
<tr>
<td style="text-align:left">?</td>
<td style="text-align:left">前一个字符的0次或1次</td>
<td style="text-align:left">abc?,表示ab、abc</td>
</tr>
<tr>
<td style="text-align:left">&#124;</td>
<td style="text-align:left">或,左右表达式任意一个</td>
<td style="text-align:left">abc&#124;edf,表示abc或edf</td>
</tr>
<tr>
<td style="text-align:left">{m}</td>
<td style="text-align:left">前一个字符m次</td>
<td style="text-align:left">ab{2}c,表示abbc</td>
</tr>
<tr>
<td style="text-align:left">{m,n}</td>
<td style="text-align:left">前一个字符m至n次</td>
<td style="text-align:left">ab{1,2}c,表示abc、abbc</td>
</tr>
<tr>
<td style="text-align:left">^</td>
<td style="text-align:left">匹配字符串开头</td>
<td style="text-align:left">^abc,表示abc且在一个字符串的开头</td>
</tr>
<tr>
<td style="text-align:left">$</td>
<td style="text-align:left">匹配字符串结尾</td>
<td style="text-align:left">abc%,表示abc且在一个字符串的结尾</td>
</tr>
<tr>
<td style="text-align:left">()</td>
<td style="text-align:left">分组标记,内部只能使用&#124;操作符</td>
<td style="text-align:left">(abc)表示abc,(abc&#124;def)表示abc、def</td>
</tr>
<tr>
<td style="text-align:left">\d</td>
<td style="text-align:left">数字,等价于[0-9]</td>
<td style="text-align:left">.*,表示匹配任意字符</td>
</tr>
<tr>
<td style="text-align:left">\w</td>
<td style="text-align:left">单词字符,等价于[A-Za-z0-9]</td>
<td style="text-align:left">.*,表示匹配任意字符</td>
</tr>
</tbody>
</table>
</summary>
<category term="other" scheme="http://yoursite.com/categories/other/"/>
<category term="regex" scheme="http://yoursite.com/tags/regex/"/>
</entry>
<entry>
<title>JSTL表达式把一个拼接的字符串进行分隔输出</title>
<link href="http://yoursite.com/2017/03/22/jstl-split-string/"/>
<id>http://yoursite.com/2017/03/22/jstl-split-string/</id>
<published>2017-03-22T13:28:56.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<p>在JSTL表达式中,<strong><em><c:fortokens></c:fortokens></em></strong>标签可以根据某个分隔符分隔指定字符串,相当于java.util.StringTokenizer类。<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line"><c:forTokens items="${tags}" delims="," var="tag"></div><div class="line"> <li>${tag}</li></div><div class="line"></c:forTokens></div></pre></td></tr></table></figure></p>
]]></content>
<summary type="html">
<p>在JSTL表达式中,<strong><em><c:fortokens></c:fortokens></em></strong>标签可以根据某个分隔符分隔指定字符串,相当于java.util.StringTokenizer类。<br><figure class="highli
</summary>
<category term="web" scheme="http://yoursite.com/categories/web/"/>
<category term="web" scheme="http://yoursite.com/tags/web/"/>
<category term="jstl" scheme="http://yoursite.com/tags/jstl/"/>
<category term="forTokens" scheme="http://yoursite.com/tags/forTokens/"/>
</entry>
<entry>
<title>基础排序的Python语言代码实现</title>
<link href="http://yoursite.com/2017/03/05/python-sort-algorithm/"/>
<id>http://yoursite.com/2017/03/05/python-sort-algorithm/</id>
<published>2017-03-05T05:29:27.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<h3 id="选择排序"><a href="#选择排序" class="headerlink" title="选择排序"></a>选择排序</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line">def sort_min2max(array, n):</div><div class="line"> '''</div><div class="line"> 排序函数:从小到大排序</div><div class="line"> :param array:要进行排序的数组</div><div class="line"> :param n: 要进行排序的数组的个数</div><div class="line"> '''</div><div class="line"> for i in range(n):</div><div class="line"> index = i</div><div class="line"> for j in range(i + 1,n):</div><div class="line"> if(array[j] < array[index]):</div><div class="line"> index = j</div><div class="line"></div><div class="line"> if index != i:</div><div class="line"> array[i],array[index] = array[index],array[i]</div></pre></td></tr></table></figure>
<a id="more"></a>
<h3 id="插入排序"><a href="#插入排序" class="headerlink" title="插入排序"></a>插入排序</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div></pre></td><td class="code"><pre><div class="line">def sort_min2max(array,n):</div><div class="line"> '''</div><div class="line"> 插入排序:从小到大排序,优化后版本</div><div class="line"> :param array 要排序的数组</div><div class="line"> :param n 要排序的数组个数</div><div class="line"> '''</div><div class="line"> for i in range(1,n):</div><div class="line"> #寻找array[i]的合适插入位置</div><div class="line"> now = array[i]</div><div class="line"> index = 0</div><div class="line"></div><div class="line"> for j in range(i,-1,-1):</div><div class="line"> index = j</div><div class="line"></div><div class="line"> if array[j - 1] > now:</div><div class="line"> array[j] = array[j - 1]</div><div class="line"> else:</div><div class="line"> break</div><div class="line"></div><div class="line"> array[index] = now</div></pre></td></tr></table></figure>
<h3 id="希尔排序"><a href="#希尔排序" class="headerlink" title="希尔排序"></a>希尔排序</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div></pre></td><td class="code"><pre><div class="line">'''</div><div class="line">希尔排序:从小到大排列</div><div class="line">:param array:要排序的数组</div><div class="line">:param n: 要排序的数组的个数</div><div class="line">:return:</div><div class="line">'''</div><div class="line">h = 1</div><div class="line">while h < n//3:</div><div class="line"> h = 3 * h + 1</div><div class="line"></div><div class="line">while h >= 1:</div><div class="line"> for i in range(h,n):</div><div class="line"> now = array[i]</div><div class="line"> j = i</div><div class="line"> while j >= h and now < array[j-h]:</div><div class="line"> array[j]=array[j-h]</div><div class="line"> j -= h</div><div class="line"> array[j] = now</div><div class="line"></div><div class="line"> h /= 3</div></pre></td></tr></table></figure>
<h3 id="冒泡排序"><a href="#冒泡排序" class="headerlink" title="冒泡排序"></a>冒泡排序</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div></pre></td><td class="code"><pre><div class="line">def sort_min2max(array, n):</div><div class="line"> '''</div><div class="line"> 冒泡排序:从小到大排序</div><div class="line"> :param array:要排序的数组</div><div class="line"> :param n: 要排序的数组的个数</div><div class="line"> :return:</div><div class="line"> '''</div><div class="line"> swapped = True</div><div class="line"></div><div class="line"> while swapped:</div><div class="line"> swapped = False</div><div class="line"> for i in range(1,n):</div><div class="line"> if array[i - 1] > array[i]:</div><div class="line"> array[i -1],array[i] = array[i],array[i - 1]</div><div class="line"> swapped = True</div><div class="line"> #已经将最大的值放到了最后面,则可减少最末值的判断</div><div class="line"> n -= 1</div></pre></td></tr></table></figure>
]]></content>
<summary type="html">
<h3 id="选择排序"><a href="#选择排序" class="headerlink" title="选择排序"></a>选择排序</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div></pre></td><td class="code"><pre><div class="line">def sort_min2max(array, n):</div><div class="line"> &apos;&apos;&apos;</div><div class="line"> 排序函数:从小到大排序</div><div class="line"> :param array:要进行排序的数组</div><div class="line"> :param n: 要进行排序的数组的个数</div><div class="line"> &apos;&apos;&apos;</div><div class="line"> for i in range(n):</div><div class="line"> index = i</div><div class="line"> for j in range(i + 1,n):</div><div class="line"> if(array[j] &lt; array[index]):</div><div class="line"> index = j</div><div class="line"></div><div class="line"> if index != i:</div><div class="line"> array[i],array[index] = array[index],array[i]</div></pre></td></tr></table></figure>
</summary>
<category term="python" scheme="http://yoursite.com/categories/python/"/>
<category term="python" scheme="http://yoursite.com/tags/python/"/>
<category term="sort" scheme="http://yoursite.com/tags/sort/"/>
</entry>
<entry>
<title>Python语言之request库学习</title>
<link href="http://yoursite.com/2017/03/02/python-requests-learn/"/>
<id>http://yoursite.com/2017/03/02/python-requests-learn/</id>
<published>2017-03-02T10:20:43.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<h3 id="说明"><a href="#说明" class="headerlink" title="说明"></a>说明</h3><p><strong>request</strong>库是python中一个通过HTTP协议请求去爬取网页信息的第三方库,通过GET、POST等类型向目标域发送request请求,返回响应结果Response,通过对响应结果的解析,即可得到我们想要的信息</p>
<h3 id="术语"><a href="#术语" class="headerlink" title="术语"></a>术语</h3><ul>
<li>HTTP:超文本传输协议</li>
</ul>
<ol>
<li>一个基于请求与响应模式的、无状态的应用层协议</li>
<li>无状态:第一次和第二次请求没有关联</li>
<li>HTTP协议采用URL作为定位网络资源的标识</li>
</ol>
<h3 id="API说明"><a href="#API说明" class="headerlink" title="API说明"></a>API说明</h3><ul>
<li>基础API:requests.request(method,url,**kwargs)</li>
<li>示例说明<br>eg: requests.get(url,params=None,**kwargs)</li>
</ul>
<ol>
<li>url:是访问的网站地址</li>
<li>params: 是附加的参数</li>
<li>kwargs:控制访问的参数,在GET请求中有12个</li>
</ol>
<a id="more"></a>
<ul>
<li>requests的七个主要的API</li>
</ul>
<ol>
<li>构造一个请求,其他六个API的基础方法:requests.request()</li>
<li>GET请求:requests.get()</li>
<li>POST请求:requests.post()</li>
<li>获取头信息:requests.head()</li>
<li>put请求:requests.put()</li>
<li>提交局部修改的请求:requests.patch()</li>
<li>删除请求:requests.delete()</li>
</ol>
<ul>
<li>请求返回的对象Response对象的属性</li>
</ul>
<ol>
<li>状态码:r.status_code</li>
<li>响应内容:r.text</li>
<li>从Http header中猜测出的的编码方式:r.encoding。如果 header中不存在charset,则认为编码为ISO-8859-1</li>
<li>从内容中分析出的响应内容编码方式:r.apparent_encoding</li>
<li>响应内容的二进制形式:r.content</li>
</ol>
<ul>
<li>Requests库的异常</li>
</ul>
<ol>
<li>网络连接错误异常,如DNS查询失败、拒绝连接:requests.ConnectionError</li>
<li>HTTP错误异常:requests.HTTPError</li>
<li>URL缺失异常:requests.URIRequired</li>
<li>超过最大重定向次数:requests.TooManyRedirects</li>
<li>连接远程服务器超时:requests.ConnectTimeout</li>
<li>请求URL超时:requests.Timeout</li>
</ol>
<ul>
<li>控制参数**kwargs</li>
</ul>
<ol>
<li>params:参数</li>
<li>json:JSON格式的数据</li>
<li>data:POST参数</li>
<li>headers:HTTP的头字段</li>
<li>cookies</li>
<li>auth:认证参数</li>
<li>files:字典类型,传输文件</li>
<li>timeout:超时时间</li>
<li>proxies:设置代理服务器</li>
<li>allow_redirects:True/False,是否允许重定向</li>
<li>stream:True/False,获取内容是否立即下载</li>
<li>verify:SSL相关参数</li>
<li>cert:本地SSL证书路径</li>
</ol>
<ul>
<li>常用的抛出异常方法</li>
</ul>
<ol>
<li>r.raise_for_status():如果不是200,产生异常requests.HTTPError</li>
</ol>
<h3 id="安装requests库"><a href="#安装requests库" class="headerlink" title="安装requests库"></a>安装requests库</h3><p>系统已安装python以及pip插件,打开控制台,输入如下命令进行安装</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">pip install requests</div></pre></td></tr></table></figure>
<h3 id="简单使用"><a href="#简单使用" class="headerlink" title="简单使用"></a>简单使用</h3><ol>
<li><p>导入包</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">import requests</div></pre></td></tr></table></figure>
</li>
<li><p>发送get请求,访问百度首页</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">r = requests.get('http://www.baidu.com')</div></pre></td></tr></table></figure>
</li>
<li><p>获取状态码</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">r.status_code</div></pre></td></tr></table></figure>
</li>
<li><p>设置编码</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">r.encoding = 'utf-8'</div></pre></td></tr></table></figure>
</li>
<li><p>获取响应内容</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">r.text</div></pre></td></tr></table></figure>
</li>
<li><p>判断返回的对象类型</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">type(r) #requests.models.Response</div></pre></td></tr></table></figure>
</li>
<li><p>获取响应的头部信息</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">r.headers</div></pre></td></tr></table></figure>
</li>
<li><p>带参数的GET请求</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">params = {'username':'yaohuiye','password':'123abc'}</div><div class="line">r = requests.request('GET','http://yaohuiye.com/blog',params = params)</div><div class="line">print(r.url) #打印链接</div></pre></td></tr></table></figure>
</li>
</ol>
<h3 id="爬取网页的通用代码框架"><a href="#爬取网页的通用代码框架" class="headerlink" title="爬取网页的通用代码框架"></a>爬取网页的通用代码框架</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div></pre></td><td class="code"><pre><div class="line"># -*- coding: utf-8 -*-</div><div class="line">import requests</div><div class="line">import time</div><div class="line"></div><div class="line">def getHTMLText(url):</div><div class="line"> try:</div><div class="line"> r = requests.get(url, timeout=30)</div><div class="line"> r.raise_for_status() #如果状态码不是200,则引发HTTPError异常</div><div class="line"> r.encoding = r.apparent_encoding</div><div class="line"> return r.text</div><div class="line"> except:</div><div class="line"> return '产生异常'</div><div class="line"></div><div class="line"></div><div class="line">if __name__ == '__main__':</div><div class="line"> url = 'http://www.baidu.com'</div><div class="line"> startTime = time.clock()</div><div class="line"> </div><div class="line"> for i in range(100):</div><div class="line"> getHTMLText(url)</div><div class="line"> endTime = time.clock()</div><div class="line"> print('消耗了%d秒'%(endTime - startTime))</div></pre></td></tr></table></figure>
<h3 id="爬取图片并存储"><a href="#爬取图片并存储" class="headerlink" title="爬取图片并存储"></a>爬取图片并存储</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div></pre></td><td class="code"><pre><div class="line">import os</div><div class="line">import requests</div><div class="line"></div><div class="line">def fetch(url,imageDir):</div><div class="line"> try:</div><div class="line"> if not os.path.exists(imageDir):</div><div class="line"> os.mkdir(imageDir)</div><div class="line"></div><div class="line"> imagePath = imageDir + '/' + url.split('/')[-1]</div><div class="line"></div><div class="line"> if not os.path.exists(imagePath):</div><div class="line"> r = requests.get(url)</div><div class="line"> r.raise_for_status()</div><div class="line"> with open(imagePath,'wb') as f:</div><div class="line"> f.write(r.content)</div><div class="line"> f.close()</div><div class="line"> print('save success')</div><div class="line"></div><div class="line"> else:</div><div class="line"> print('file exists')</div><div class="line"> except:</div><div class="line"> print('fetch fail')</div><div class="line"></div><div class="line"></div><div class="line">if __name__ == '__main__':</div><div class="line"> url = 'http://img.1985t.com/uploads/attaches/2016/01/60320-bbZEcch.jpg'</div><div class="line"> imageDir = 'F://images'</div><div class="line"> fetch(url,imageDir)</div></pre></td></tr></table></figure>
<h3 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h3><p>尽管Requests库功能很友好、开发简单(其实除了import外只需一行主要代码),但其性能与专业爬虫相比还是有一定差距的。</p>
<h3 id="使用技巧"><a href="#使用技巧" class="headerlink" title="使用技巧"></a>使用技巧</h3><p>当一些请求响应的内容比较大时,可以通过header请求先去获取到header中的信息,然后判断一些相关信息后,再采取措施去请求数据</p>
<h3 id="学习参考"><a href="#学习参考" class="headerlink" title="学习参考"></a>学习参考</h3><p>学习参考于中国大学imooc课程:嵩天老师的《Python网络爬虫与信息提取》</p>
]]></content>
<summary type="html">
<h3 id="说明"><a href="#说明" class="headerlink" title="说明"></a>说明</h3><p><strong>request</strong>库是python中一个通过HTTP协议请求去爬取网页信息的第三方库,通过GET、POST等类型向目标域发送request请求,返回响应结果Response,通过对响应结果的解析,即可得到我们想要的信息</p>
<h3 id="术语"><a href="#术语" class="headerlink" title="术语"></a>术语</h3><ul>
<li>HTTP:超文本传输协议</li>
</ul>
<ol>
<li>一个基于请求与响应模式的、无状态的应用层协议</li>
<li>无状态:第一次和第二次请求没有关联</li>
<li>HTTP协议采用URL作为定位网络资源的标识</li>
</ol>
<h3 id="API说明"><a href="#API说明" class="headerlink" title="API说明"></a>API说明</h3><ul>
<li>基础API:requests.request(method,url,**kwargs)</li>
<li>示例说明<br>eg: requests.get(url,params=None,**kwargs)</li>
</ul>
<ol>
<li>url:是访问的网站地址</li>
<li>params: 是附加的参数</li>
<li>kwargs:控制访问的参数,在GET请求中有12个</li>
</ol>
</summary>
<category term="python" scheme="http://yoursite.com/categories/python/"/>
<category term="python" scheme="http://yoursite.com/tags/python/"/>
<category term="requests" scheme="http://yoursite.com/tags/requests/"/>
</entry>
<entry>
<title>FastJSON的时间格式化</title>
<link href="http://yoursite.com/2017/02/19/fastjson-time-format/"/>
<id>http://yoursite.com/2017/02/19/fastjson-time-format/</id>
<published>2017-02-19T04:21:32.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<h2 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h2><p>在项目中某模块的列表展示时发表时间有格式的限制,格式需为<strong>“yyyy-MM-dd HH:mm:ss”</strong>。<br>模块的列表数据是采用了FastJSON这个JSON组件直接进行数据解析。如果没有相应的处理,导致了解析出来的时间格式为<strong>“yyyy-MM-dd HH:mm:ss.0”</strong>,多了一个”.0”的字符</p>
<h2 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h2><p>通过FastJSON的注解来解决,通过@JSONField注解的属性format来进行指定,如下所示:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">public class Article{</div><div class="line"> @JSONField(format="yyyy-MM-dd HH:mm:ss")</div><div class="line"> private Timestamp time;</div><div class="line"> ...//省略其他属性</div><div class="line">}</div></pre></td></tr></table></figure></p>
]]></content>
<summary type="html">
<h2 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h2><p>在项目中某模块的列表展示时发表时间有格式的限制,格式需为<strong>“yyyy-MM-dd HH:mm:ss”</strong>。<br
</summary>
<category term="java" scheme="http://yoursite.com/categories/java/"/>
<category term="FastJSON" scheme="http://yoursite.com/tags/FastJSON/"/>
<category term="JSONField" scheme="http://yoursite.com/tags/JSONField/"/>
</entry>
<entry>
<title>编写模糊查询的SQL语句</title>
<link href="http://yoursite.com/2017/02/19/sql-like-create/"/>
<id>http://yoursite.com/2017/02/19/sql-like-create/</id>
<published>2017-02-19T03:35:04.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<h3 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h3><p>之前项目在使用到LIKE查询时,使用的方式如下:<br>1、编写SQL语句<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sql = SELECT * FROM Dictionary WHERE name LIKE ?</div></pre></td></tr></table></figure></p>
<p>2、在程序中对查询的关键字添加上左右的<em>%</em>通配符<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">name = "%" + name + "%"</div></pre></td></tr></table></figure></p>
<p>3、执行查询语句<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">dao.query(sql,tagName)</div></pre></td></tr></table></figure></p>
<p>之所以将通配符放到Java程序中进行拼接,是因为如果将<em>%</em>放到sql语句中,sql语句执行会报错,类似如下:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sql = SELECT * FROM Dictionary WHERE name LIKE %?%</div></pre></td></tr></table></figure></p>
<a id="more"></a>
<p>这就使得在程序中嵌入了sql语句的关键字,JAVA代码与SQL代码没有严格区分。</p>
<h3 id="解决方法"><a href="#解决方法" class="headerlink" title="解决方法"></a>解决方法</h3><p>1、编写SQL语句,即在占位符的左右加上%,其中%号用单引号包裹起来,然后空一格<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sql = SELECT * FROM Dictionary WHERE name LIKE '%' ? '%'</div></pre></td></tr></table></figure></p>
<p>2、执行查询语句<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">dao.query(sql,tagName)</div></pre></td></tr></table></figure></p>
<p>如此便可正确的执行sql语句,从而将sql代码与JAVA代码分离 </p>
]]></content>
<summary type="html">
<h3 id="问题"><a href="#问题" class="headerlink" title="问题"></a>问题</h3><p>之前项目在使用到LIKE查询时,使用的方式如下:<br>1、编写SQL语句<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sql = SELECT * FROM Dictionary WHERE name LIKE ?</div></pre></td></tr></table></figure></p>
<p>2、在程序中对查询的关键字添加上左右的<em>%</em>通配符<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">name = &quot;%&quot; + name + &quot;%&quot;</div></pre></td></tr></table></figure></p>
<p>3、执行查询语句<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">dao.query(sql,tagName)</div></pre></td></tr></table></figure></p>
<p>之所以将通配符放到Java程序中进行拼接,是因为如果将<em>%</em>放到sql语句中,sql语句执行会报错,类似如下:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">sql = SELECT * FROM Dictionary WHERE name LIKE %?%</div></pre></td></tr></table></figure></p>
</summary>
<category term="sql" scheme="http://yoursite.com/categories/sql/"/>
<category term="sql" scheme="http://yoursite.com/tags/sql/"/>
<category term="like" scheme="http://yoursite.com/tags/like/"/>
</entry>
<entry>
<title>SVN安装记录</title>
<link href="http://yoursite.com/2017/02/15/svn-install/"/>
<id>http://yoursite.com/2017/02/15/svn-install/</id>
<published>2017-02-15T15:20:52.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<h3 id="SVN安装地址"><a href="#SVN安装地址" class="headerlink" title="SVN安装地址"></a>SVN安装地址</h3><ul>
<li>VisualSVN:<a href="http://subversion.apache.org/packages.html" target="_blank" rel="external">http://subversion.apache.org/packages.html</a></li>
<li>TortoiseSVN:<a href="http://tortoisesvn.net/downloads.html" target="_blank" rel="external">http://tortoisesvn.net/downloads.html</a></li>
</ul>
<h3 id="安装步骤"><a href="#安装步骤" class="headerlink" title="安装步骤"></a>安装步骤</h3><p><code>一路选择安装路径,Next...</code></p>
<ol>
<li><p>在服务器中安装Visual SVN作为SVN的服务端,安装完成后,打开Visual SVN图形界面,可方便的进行版本库添加、用户创建。</p>
</li>
<li><p>在服务器中安装TortoiseSVN,用于版本库的签出、签入、更新、提交操作。</p>
</li>
<li><p>在客户端中安装TortoiseSVN,用于版本库的签出、签入、更新、提交操作。</p>
</li>
</ol>
]]></content>
<summary type="html">
<h3 id="SVN安装地址"><a href="#SVN安装地址" class="headerlink" title="SVN安装地址"></a>SVN安装地址</h3><ul>
<li>VisualSVN:<a href="http://subversion.apache.
</summary>
<category term="tool" scheme="http://yoursite.com/categories/tool/"/>
<category term="svn" scheme="http://yoursite.com/tags/svn/"/>
</entry>
<entry>
<title>java学习笔记-enum</title>
<link href="http://yoursite.com/2017/02/15/java-enum/"/>
<id>http://yoursite.com/2017/02/15/java-enum/</id>
<published>2017-02-15T15:17:32.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<p>一、java枚举知识点:</p>
<ul>
<li>它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 </li>
<li>所有枚举值都是public,static,final的。 </li>
<li>Enum默认实现了java.lang.Comparable接口。 </li>
<li>Enum覆盖了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”. </li>
<li>Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.</li>
<li>Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。 </li>
<li>Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定</li>
</ul>
<a id="more"></a>
<p>二、JAVA根据枚举的顺序索引,去查询获取对应的枚举:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">/**</div><div class="line"> * 根据索引获取</div><div class="line"> * @param <T></div><div class="line"> * @param clazz</div><div class="line"> * @param ordinal</div><div class="line"> * @return</div><div class="line"> */</div><div class="line">public static <T extends Enum<T>> T valueOf(Class<T> clazz, int ordinal) {</div><div class="line"> return (T)clazz.getEnumConstants()[ordinal];</div><div class="line">}</div></pre></td></tr></table></figure></p>
<p>三、JAVA根据枚举的name,去查询获取对应的枚举:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div></pre></td><td class="code"><pre><div class="line">/**</div><div class="line"> * 根据name获取</div><div class="line"> * @param <T></div><div class="line"> * @param enumType</div><div class="line"> * @param name</div><div class="line"> * @return</div><div class="line"> */</div><div class="line">public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name) {</div><div class="line"> return (T)Enum.valueOf(enumType, name);</div><div class="line">}</div></pre></td></tr></table></figure></p>
]]></content>
<summary type="html">
<p>一、java枚举知识点:</p>
<ul>
<li>它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 </li>
<li>所有枚举值都是public,static,final的。 </li>
<li>Enum默认实现了java.lang.Comparable接口。 </li>
<li>Enum覆盖了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”. </li>
<li>Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.</li>
<li>Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。 </li>
<li>Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定</li>
</ul>
</summary>
<category term="java" scheme="http://yoursite.com/categories/java/"/>
<category term="java" scheme="http://yoursite.com/tags/java/"/>
<category term="enum" scheme="http://yoursite.com/tags/enum/"/>
</entry>
<entry>
<title>Hexo博客搭建笔记</title>
<link href="http://yoursite.com/2017/02/12/hexo-note/"/>
<id>http://yoursite.com/2017/02/12/hexo-note/</id>
<published>2017-02-12T12:15:52.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<p>Hexo是一款优秀的静态博客,本文主要记录了在搭建Hexo博客时的一些安装配置。通过Hexo配置了自己的个人博客,采用了Next主题。<br>访问域名:<a href="http://yaohuiye.com" target="_blank" rel="external">http://yaohuiye.com</a><br>github源码:<a href="https://github.com/yaohuiye/yaohuiye.github.io" target="_blank" rel="external">https://github.com/yaohuiye/yaohuiye.github.io</a></p>
<a id="more"></a>
<h3 id="环境安装"><a href="#环境安装" class="headerlink" title="环境安装"></a>环境安装</h3><ol>
<li><p>安装NodeJs</p>
</li>
<li><p>为防止网络问题导致下载卡顿.NoteJs配置为使用淘宝镜像,输入如下的命令:<br><code>npm install -g cnpm --registry=https://registry.npm.taobao.org</code></p>
</li>
<li><p>通过如下的命令安装hexo:<br> <code>cnpm install -g hexo-cli</code><br> <code>cnpm install hexo --save</code> </p>
</li>
<li><p>验证hexo版本,此刻安装的最新版本是3.2.2<br><code>hexo -v</code></p>
</li>
<li><p>安装Git,并在Github上拥有一个账号。因为项目是部署在Github中,利用到了其提供的Pages功能</p>
</li>
</ol>
<h3 id="Hexo指令熟悉"><a href="#Hexo指令熟悉" class="headerlink" title="Hexo指令熟悉"></a>Hexo指令熟悉</h3><ul>
<li>清理生成文件<br><code>hexo clean</code></li>
<li>新建文章<br><code>hexo new "postName" == hexo n "postName"</code></li>
<li>新建页面<br><code>hexo new page "pageName"</code></li>
<li>生成静态页面至public目录<br><code>hexo generate == hexo g</code></li>
<li>开启预览访问端口(默认端口4000,’ctrl + c’关闭server)<br><code>hexo server == hexo s</code></li>
<li>将.deploy目录部署到GitHub<br><code>hexo deploy == hexo d</code><br>备注:命令可以联结使用,如:<code>hexo clean && hexo generate && hexo deploy</code>。如<code>hexo s -g</code></li>
</ul>
<h3 id="生成博客"><a href="#生成博客" class="headerlink" title="生成博客"></a>生成博客</h3><ol>
<li>创建一个博客目录blog</li>
<li>在blog文件夹中进入git的控制台</li>
<li>进行Hexo博客的初始化<br><code>hexo init</code><br><code>cnpm install</code></li>
<li>运行博客<br><code>hexo s -g</code></li>
<li>在浏览器中输入:<a href="http://localhost:4000" target="_blank" rel="external">http://localhost:4000</a> ,则会展示博客内容</li>
</ol>
<h3 id="配置博客"><a href="#配置博客" class="headerlink" title="配置博客"></a>配置博客</h3><p> 主要的配置文件是blog目录下的_config.yml。在这个配置文件中可以修改博客的标题title,简介description,语言lang,主题theme</p>
<ol>
<li>博客采用了NexT主题,安装步骤如下:<br>(1)进入blog目录下,打开git的控制台,输入如下的命令:<br> <code>git clone https://github.com/iissnan/hexo-theme-next themes/next</code><br>(2)在blog根目录下的_config.yml中修改theme的值,修改为next<br>(3)重新运行博客,在浏览器中即可看到效果<br>备注:next提供了非常完整的帮助文档,具体可参考虑链接:<br><a href="http://theme-next.iissnan.com/getting-started.html" target="_blank" rel="external">http://theme-next.iissnan.com/getting-started.html</a></li>
<li>设置站点的图标favicon.ico<br>(1)制作一个favicon.ico文件,将其放到blog/source目录下</li>
<li>设置404页面<br>(1)这里主要引用的是腾讯的公益找人404.html<br>(2)参考链接:<a href="http://theme-next.iissnan.com/theme-settings.html#volunteer-404" target="_blank" rel="external">http://theme-next.iissnan.com/theme-settings.html#volunteer-404</a></li>
<li><p>设置分类页面categories<br>(1)运行命令:<code>hexo new page categories</code><br>(2)此时在source目录下会生成categories文件夹,categories文件夹中会有一个index.md<br>(3)打开index.md,完善如下的内容。type: “categories”一定要添加,不然页面上不会生成tag列表。如果有评论功能,则添加上comments: false来禁止。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line"> ---</div><div class="line">title: 分类</div><div class="line">date: 2017-02-12 15:25:57,</div><div class="line">type: "categories"</div><div class="line">comments: false</div><div class="line"> ---</div></pre></td></tr></table></figure>
</li>
<li><p>设置标签页面tags<br>(1)运行命令:<code>hexo new page tags</code><br>(2)此时在source目录下会生成tags文件夹,tags文件夹中会有一个index.md<br>(3)打开index.md,完善如下的内容。type: “tags”一定要添加,不然页面上不会生成tag列表。如果有评论功能,则添加上comments: false来禁止。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line"> ---</div><div class="line">title: 标签</div><div class="line">date: 2017-02-12 15:25:57,</div><div class="line">type: "tags"</div><div class="line">comments: false</div><div class="line"> ---</div></pre></td></tr></table></figure>
</li>
<li><p>设置评论<br>(1)这里设置的是多说的评论<br>(2)参考链接:<a href="http://theme-next.iissnan.com/third-party-services.html#duoshuo" target="_blank" rel="external">http://theme-next.iissnan.com/third-party-services.html#duoshuo</a></p>
</li>
<li>设置分享<br>(1)这里设置的是JiaThis<br>(2)参考链接:<a href="http://theme-next.iissnan.com/third-party-services.html#share-jiathis" target="_blank" rel="external">http://theme-next.iissnan.com/third-party-services.html#share-jiathis</a></li>
<li>设置站内搜索<br>(1)这里设置的是Local Search。需要安装hexo-generator-searchdb插件<br>(2)参考链接:<a href="http://theme-next.iissnan.com/third-party-services.html#local-search" target="_blank" rel="external">http://theme-next.iissnan.com/third-party-services.html#local-search</a></li>
<li><p>设置about页面<br>(1)运行命令:<code>hexo new page about</code><br>(2)此时在source目录下会生成about文件夹,about文件夹中会有一个index.md<br>(3)在index.md中进行个人介绍内容的编辑</p>
</li>
<li><p>设置统计分析<br>(1)这里设置的是百度统计<br>(2)参考链接:<a href="http://theme-next.iissnan.com/third-party-services.html#analytics-baidu" target="_blank" rel="external">http://theme-next.iissnan.com/third-party-services.html#analytics-baidu</a></p>
</li>
<li>设置社交账号展示<br>(1)参考链接:<a href="http://theme-next.iissnan.com/theme-settings.html#author-sites" target="_blank" rel="external">http://theme-next.iissnan.com/theme-settings.html#author-sites</a></li>
<li><p>设置页面文章的篇数<br>(1)安装相关插件<br><code>cnpm install --save hexo-generator-index
cnpm install --save hexo-generator-archive
cnpm install --save hexo-generator-tag</code><br>(2)在_config.yml配置文件中添加上如下的配置</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">index_generator:</div><div class="line"> per_page: 5</div><div class="line">archive_generator:</div><div class="line"> per_page: 20</div><div class="line"> yearly: true</div><div class="line"> monthly: true</div><div class="line">tag_generator:</div><div class="line"> per_page: 10</div></pre></td></tr></table></figure>
</li>
<li><p>添加RSS<br>(1)安装插件<br><code>cnpm install hexo-generator-feed --save</code><br>(2)在_config.yml修改配置:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">feed</div><div class="line"> type: atom</div><div class="line"> path: atom.xml</div><div class="line"> limit: 20</div></pre></td></tr></table></figure>
</li>
<li><p>添加sitemap<br>(1)安装插件<br><code>cnpm install hexo-generator-sitemap --save</code><br>(2)在_config.yml修改配置:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div></pre></td><td class="code"><pre><div class="line">sitemap:</div><div class="line"> path: sitemap.xml</div></pre></td></tr></table></figure>
</li>
<li><p>标题栏展示字数统计以及阅读时长<br>(1)安装插件<br>(2)找到themes/next/layout/_marcro文件夹中的post.swig文件<br>(3)定位到<strong>post-time</strong>的元素,在元素后面追加如下的代码:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div></pre></td><td class="code"><pre><div class="line"><span class="post-time"></div><div class="line"> &nbsp; | &nbsp;</div><div class="line"> <span class="post-meta-item-icon"></div><div class="line"> <i class="fa fa-calendar-o"></i></div><div class="line"> </span></div><div class="line"> <span class="post-meta-item-text">字数统计:</span></div><div class="line"> <span class="post-count">{{ wordcount(post.content) }}(字)</span></div><div class="line"> </div><div class="line"></span></div><div class="line"> </div><div class="line"><span class="post-time"></div><div class="line"> &nbsp; | &nbsp;</div><div class="line"> <span class="post-meta-item-icon"></div><div class="line"> <i class="fa fa-calendar-o"></i></div><div class="line"> </span></div><div class="line"> <span class="post-meta-item-text">阅读时长:</span></div><div class="line"> <span class="post-count">{{ min2read(post.content) }}(分)</span></div><div class="line"> </div><div class="line"></span></div></pre></td></tr></table></figure>
</li>
</ol>
<p>(4)参考链接:<a href="http://www.joryhe.com/2016-06-06-hexo_wordcount_setting_your_post.html" target="_blank" rel="external">http://www.joryhe.com/2016-06-06-hexo_wordcount_setting_your_post.html</a></p>
<ol>
<li>加载google字体缓慢的解决<br>(1)打开next/_config.xml文件,在font属性下修改host为//fonts.css.network<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">font:</div><div class="line"> enable: true</div><div class="line"></div><div class="line"> # Uri of fonts host. E.g. //fonts.googleapis.com (Default)</div><div class="line"> host: //fonts.css.network</div></pre></td></tr></table></figure>
</li>
</ol>
<h3 id="部署到github,使之可以通过username-github-io来进行站点的访问"><a href="#部署到github,使之可以通过username-github-io来进行站点的访问" class="headerlink" title="部署到github,使之可以通过username.github.io来进行站点的访问"></a>部署到github,使之可以通过username.github.io来进行站点的访问</h3><p>(1)参考链接:<a href="http://blog.csdn.net/u3d_ysj/article/details/50525820" target="_blank" rel="external">http://blog.csdn.net/u3d_ysj/article/details/50525820</a></p>
<h3 id="部署到coding"><a href="#部署到coding" class="headerlink" title="部署到coding"></a>部署到coding</h3><p>(1)参考链接:<a href="http://www.jianshu.com/p/7ad9d3cd4d6e#" target="_blank" rel="external">http://www.jianshu.com/p/7ad9d3cd4d6e#</a></p>
<h3 id="域名申请以及域名解析"><a href="#域名申请以及域名解析" class="headerlink" title="域名申请以及域名解析"></a>域名申请以及域名解析</h3><p>(1)域名是在godaddy中购买,省去了备案的手续<br>(2)域名解析是在dnspod中配置的</p>
<h3 id="写博客"><a href="#写博客" class="headerlink" title="写博客"></a>写博客</h3><ol>
<li>如写一个test文章,输入如下的命令<br><code>hexo n "test"</code></li>
<li>在_post中就生成了一个test.md文件</li>
<li>指定分类,在categories中添加上分类,如<br><code>categories: 测试</code></li>
<li><p>指定标签,在tags中添加上标签,如</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">tags:</div><div class="line">-test</div><div class="line">-测试</div></pre></td></tr></table></figure>
</li>
<li><p>编写一段简介,然后换行添加上一行 <!--more-->,这部分简介就会有列表页面展示</p>
</li>
<li>编写文章内容</li>
<li>重新生成页面,启动服务<br><code>hexo s -g</code></li>
<li>确定文章写好后,将其提交到github中<br><code>hexo clean && hexo generate && hexo deploy</code> </li>
</ol>
<h3 id="参考链接"><a href="#参考链接" class="headerlink" title="参考链接"></a>参考链接</h3><p>Maupassant主题:<a href="https://www.haomwei.com/technology/maupassant-hexo.html" target="_blank" rel="external">https://www.haomwei.com/technology/maupassant-hexo.html</a><br>Hexo搭建Github-Pages博客填坑教程:<a href="http://www.jianshu.com/p/35e197cb1273" target="_blank" rel="external">http://www.jianshu.com/p/35e197cb1273</a><br>Next主题:<a href="https://github.com/iissnan/hexo-theme-next" target="_blank" rel="external">https://github.com/iissnan/hexo-theme-next</a><br>Next主题使用文档: <a href="http://theme-next.iissnan.com/" target="_blank" rel="external">http://theme-next.iissnan.com/</a><br>关于Github的配置、域名申请、图床:<a href="http://ibruce.info/2013/11/22/hexo-your-blog/" target="_blank" rel="external">http://ibruce.info/2013/11/22/hexo-your-blog/</a></p>
]]></content>
<summary type="html">
<p>Hexo是一款优秀的静态博客,本文主要记录了在搭建Hexo博客时的一些安装配置。通过Hexo配置了自己的个人博客,采用了Next主题。<br>访问域名:<a href="http://yaohuiye.com">http://yaohuiye.com</a><br>github源码:<a href="https://github.com/yaohuiye/yaohuiye.github.io">https://github.com/yaohuiye/yaohuiye.github.io</a></p>
</summary>
<category term="web" scheme="http://yoursite.com/categories/web/"/>
<category term="hexo" scheme="http://yoursite.com/tags/hexo/"/>
</entry>
<entry>
<title>Hello hexo</title>
<link href="http://yoursite.com/2017/02/12/hello-world/"/>
<id>http://yoursite.com/2017/02/12/hello-world/</id>
<published>2017-02-12T03:27:07.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/" target="_blank" rel="external">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/" target="_blank" rel="external">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html" target="_blank" rel="external">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues" target="_blank" rel="external">GitHub</a>.</p>
<a id="more"></a>
<h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo new <span class="string">"My New Post"</span></div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/writing.html" target="_blank" rel="external">Writing</a></p>
<h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo server</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/server.html" target="_blank" rel="external">Server</a></p>
<h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo generate</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/generating.html" target="_blank" rel="external">Generating</a></p>
<h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">$ hexo deploy</div></pre></td></tr></table></figure>
<p>More info: <a href="https://hexo.io/docs/deployment.html" target="_blank" rel="external">Deployment</a></p>
]]></content>
<summary type="html">
<p>Welcome to <a href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p>
</summary>
<category term="web" scheme="http://yoursite.com/categories/web/"/>
<category term="hexo" scheme="http://yoursite.com/tags/hexo/"/>
</entry>
<entry>
<title>MarkDown语法入门</title>
<link href="http://yoursite.com/2017/02/12/learn-markdown/"/>
<id>http://yoursite.com/2017/02/12/learn-markdown/</id>
<published>2017-02-12T03:27:07.000Z</published>
<updated>2017-04-12T14:56:27.000Z</updated>
<content type="html"><![CDATA[<h3 id="MarkDown简介"><a href="#MarkDown简介" class="headerlink" title="MarkDown简介"></a>MarkDown简介</h3><p><code>Markdown</code>是一种轻量级标记语言,创始人为<code>John Gruber</code>和<code>Aaron Swartz</code>。<br>它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的HTML文档”<br><a id="more"></a></p>
<h3 id="Markdown编辑器配置"><a href="#Markdown编辑器配置" class="headerlink" title="Markdown编辑器配置"></a>Markdown编辑器配置</h3><p>如果你使用Sublime编辑器,可以在该编辑器中添加上<code>MarkdownPreview</code>插件。<br>在编辑器中使用<code>Ctrl+Shift+P</code>,选择<code>Markdown Preview in browser</code>命令,在浏览器中查看Markdown的效果</p>
<h3 id="标题"><a href="#标题" class="headerlink" title="标题"></a>标题</h3><p>标题分为1到6种级别,1为最大,6为最小。使用相应个数的<code>#</code>来生成。或者使用底线形式,利用<br><code>=</code>表示[最高级标题]和<code>-</code>表示[第二级标题]<br><strong>代码如下:</strong></p>
<pre><code>### 这是级别为3的标题 ###
###### 这是级别为6的标题 ######
这是最高级标题
=============
这是第二级标题
----------------------
</code></pre><p><strong>效果如下:</strong></p>
<h3 id="这是级别为3的标题"><a href="#这是级别为3的标题" class="headerlink" title="这是级别为3的标题"></a>这是级别为3的标题</h3><h6 id="这是级别为6的标题"><a href="#这是级别为6的标题" class="headerlink" title="这是级别为6的标题"></a>这是级别为6的标题</h6><h1 id="这是最高级标题"><a href="#这是最高级标题" class="headerlink" title="这是最高级标题"></a>这是最高级标题</h1><h2 id="这是第二级标题"><a href="#这是第二级标题" class="headerlink" title="这是第二级标题"></a>这是第二级标题</h2><h3 id="段落和换行"><a href="#段落和换行" class="headerlink" title="段落和换行"></a>段落和换行</h3><p>使用一个或多个<code>空行</code>分隔内容段来生成段落<br>在行末输入2个或以上’空格’再回车来生成换行</p>
<h3 id="强调"><a href="#强调" class="headerlink" title="强调"></a>强调</h3><p>被1个<code>*</code>或<code>_</code>包围起来的文字,表示斜体<br>被2个<code>*</code>或<code>_</code>包围起来的文字,表示粗体<br>备注:如果在<code>*</code>或者<code>_</code>两边都有空白的话,那就是表示为普通符号<br><strong>代码如下:</strong></p>
<pre><code>*单个星号*
_单个下划线_
</code></pre><p><strong>效果如下:</strong><br><em>单个星号</em><br><em>单个下划线</em></p>
<h3 id="分隔线"><a href="#分隔线" class="headerlink" title="分隔线"></a>分隔线</h3><p>在一行内使用3个以上的<code>-</code>或者<code>_</code>来表示,行内除此之外不能有其它内容</p>
<h2 id="代码如下:"><a href="#代码如下:" class="headerlink" title="代码如下:"></a><strong>代码如下:</strong></h2><pre><code>____
</code></pre><p><strong>效果如下:</strong></p>
<hr>
<hr>
<h3 id="区块引用"><a href="#区块引用" class="headerlink" title="区块引用"></a>区块引用</h3><p>使用<code>></code>作为段落前缀来标识引用文字段落。<br><strong>代码如下:</strong></p>
<pre><code>>我引用了一段文字
>我引用了另一段文字
</code></pre><p><strong>效果如下:</strong></p>
<blockquote>
<p>我引用了一段文字<br>我引用了另一段文字</p>
</blockquote>
<h3 id="列表"><a href="#列表" class="headerlink" title="列表"></a>列表</h3><p>使用<code>*+-</code>表示无序列表<br>使用<code>数字</code>跟一个<code>英文句点</code>表示有序列表<br><strong>代码如下:</strong></p>
<pre><code>* 类型一
* 类型二
+ 类型三
1. 类型一
2. 类型二
3. 类型三
</code></pre><p><strong>效果如下:</strong></p>
<ul>
<li>类型一</li>
<li>类型二</li>
</ul>
<ul>
<li>类型三</li>
</ul>
<ol>
<li>类型一</li>
<li>类型二</li>
<li>类型三</li>
</ol>
<h3 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h3><p>使用<em>反引号</em>把文字括起来表示行内代码。<br>使用4个空格或一个Tab缩进,表示代码区块<br><strong>代码如下:</strong></p>
<pre><code>这是行内代码`Console.log('hello')`
Javascript:
var show = function(){
console.log("hello,world");
}
</code></pre><p><strong>效果如下:</strong><br>这是行内代码<code>Console.log("hello")</code></p>
<pre><code>Javascript:
var show = function(){
console.log("hello,world")
}
</code></pre><h3 id="链接"><a href="#链接" class="headerlink" title="链接"></a>链接</h3><p>使用<code>[链接名称](链接地址)</code>表示行内式的链接<br><strong>代码如下:</strong></p>
<pre><code>[百度](http://www.baidu.com)
</code></pre><p><strong>效果如下:</strong><br><a href="http://www.baidu.com" target="_blank" rel="external">百度</a></p>
<h3 id="图片"><a href="#图片" class="headerlink" title="图片"></a>图片</h3><p>使用<code>![提示文本](图片地址)</code>表示行内式的图片<br><strong>代码如下:</strong></p>
<pre><code>![百度翻译](http://fanyi.baidu.com/static/translation/img/header/logo_cbfea26.png)
</code></pre><p><strong>效果如下:</strong><br><img src="http://fanyi.baidu.com/static/translation/img/header/logo_cbfea26.png" alt="百度翻译"></p>
<h3 id="表格"><a href="#表格" class="headerlink" title="表格"></a>表格</h3><p><strong>代码如下:</strong><br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">| 排序方法 | 平均情况 | 最好情况 | 最坏情况 | 辅助空间 | 稳定性 |</div><div class="line">|:-----|:-----|:-----|:-----|:-----|:-----|</div><div class="line">| 冒泡排序 | O(n²) | O(nlogn) | O(n²) | O(1) | 稳定 |</div><div class="line">| 简单选择 | O(n²) | O(n²) | O(n²) | O(1) | 稳定 |</div><div class="line">| 直接插入 | O(n²) | O(n) | O(n²) | O(1) | 稳定 |</div><div class="line">| 希尔排序 | O(nlogn)~O(n²) | O(n^1.3) | O(n²) | O(1) | 不稳定 |</div><div class="line">| 堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |</div><div class="line">| 归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 不稳定 |</div><div class="line">| 快速排序 | O(nlogn) | O(nlogn) | O(n²) | O(nlogn)~O(n) | 不稳定 |</div></pre></td></tr></table></figure></p>
<p><strong>效果如下:</strong></p>
<table>
<thead>
<tr>
<th style="text-align:left">排序方法</th>
<th style="text-align:left">平均情况</th>
<th style="text-align:left">最好情况</th>
<th style="text-align:left">最坏情况</th>
<th style="text-align:left">辅助空间</th>
<th style="text-align:left">稳定性</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left">冒泡排序</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(1)</td>
<td style="text-align:left">稳定</td>
</tr>
<tr>
<td style="text-align:left">简单选择</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(1)</td>
<td style="text-align:left">稳定</td>
</tr>
<tr>
<td style="text-align:left">直接插入</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(n)</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(1)</td>
<td style="text-align:left">稳定</td>
</tr>
<tr>
<td style="text-align:left">希尔排序</td>
<td style="text-align:left">O(nlogn)~O(n²)</td>
<td style="text-align:left">O(n^1.3)</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(1)</td>
<td style="text-align:left">不稳定</td>
</tr>
<tr>
<td style="text-align:left">堆排序</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(1)</td>
<td style="text-align:left">不稳定</td>
</tr>
<tr>
<td style="text-align:left">归并排序</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(n)</td>
<td style="text-align:left">不稳定</td>
</tr>
<tr>
<td style="text-align:left">快速排序</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(nlogn)</td>
<td style="text-align:left">O(n²)</td>
<td style="text-align:left">O(nlogn)~O(n)</td>
<td style="text-align:left">不稳定</td>
</tr>
</tbody>
</table>
<p><strong> 注:</strong></p>
<ul>
<li>第一行:第一行要显示的是表头,类似Thead</li>
<li>第二行:对齐方式。|:—–|是左对齐,|:—–:|是居中对齐,|—–:|是右对齐</li>
<li>表格中的内容如有|符号,则使用可以使用<code>&#124;</code>来代替</li>
</ul>
<h3 id="参考资源"><a href="#参考资源" class="headerlink" title="参考资源"></a>参考资源</h3><ul>
<li><a href="http://justcoding.iteye.com/blog/1954655" target="_blank" rel="external">Markdown快速入门</a></li>
<li><a href="http://wowubuntu.com/markdown/" target="_blank" rel="external">Markdown语法说明</a></li>
</ul>