天天看點

使用TinySpider實戰抓取自己部落格中的内容

因為做官網,沒有内容,是以就想辦法從oschina中寫的部落格裡弄點内容,這就要用到爬蟲了。

然後就花了幾分鐘搞了一下,步驟如下:

第一步,寫個方法抓目錄:

<a href="http://my.oschina.net/tinyframework/blog/270209#">?</a>

1

2

3

4

5

6

7

8

9

10

11

<code>public</code> <code>static</code> <code>void</code> <code>processcategory(string categoryid) {</code>

<code>        </code><code>watcher watcher =</code><code>new</code> <code>watcherimpl();</code>

<code>        </code><code>spider spider =</code><code>new</code> <code>spiderimpl();</code>

<code>        </code><code>watcher.addprocessor(</code><code>new</code> <code>oschinacategoryprocessor());</code>

<code>        </code><code>quicknamefilter&lt;htmlnode&gt; nodefilter =</code><code>new</code> <code>quicknamefilter&lt;htmlnode&gt;();</code>

<code>        </code><code>nodefilter.setnodename(</code><code>"li"</code><code>);</code>

<code>        </code><code>nodefilter.setincludeattribute(</code><code>"class"</code><code>,</code><code>"blog"</code><code>);</code>

<code>        </code><code>watcher.setnodefilter(nodefilter);</code>

<code>        </code><code>spider.addwatcher(watcher);</code>

<code>        </code><code>spider.processurl(</code><code>"http://my.oschina.net/tinyframework/blog?catalog="</code><code>+categoryid);</code>

<code>    </code><code>}</code>

第二步,寫個方法抓文章:

<code>public</code> <code>static</code> <code>void</code> <code>processtopic(string pageid) {</code>

<code>        </code><code>watcher.addprocessor(</code><code>new</code> <code>oschinatopicprocessor());</code>

<code>        </code><code>nodefilter.setnodename(</code><code>"div"</code><code>);</code>

<code>        </code><code>nodefilter.setincludeattribute(</code><code>"class"</code><code>,</code><code>"blogcontent"</code><code>);</code>

<code>        </code><code>spider.processurl(</code><code>"http://my.oschina.net/tinyframework/blog/"</code><code>+pageid);</code>

第三步,寫一下目錄處理器

12

13

14

<code>public</code> <code>class</code> <code>oschinacategoryprocessor</code><code>implements</code> <code>processor {</code>

<code>    </code><code>public</code> <code>void</code> <code>process(string url, htmlnode node) {</code>

<code>        </code><code>htmlnode a = node.getsubnoderecursively(</code><code>"h2"</code><code>).getsubnode(</code><code>"a"</code><code>);</code>

<code>        </code><code>string href = a.getattribute(</code><code>"href"</code><code>);</code>

<code>        </code><code>string topicid = href.substring(href.lastindexof(</code><code>'/'</code><code>) +</code><code>1</code><code>);</code>

<code>        </code><code>system.out.printf(</code><code>"&lt;a href=\"%s.page\"&gt;%s&lt;/a&gt;\n"</code><code>, topicid, a.getpuretext());</code>

<code>        </code><code>try</code> <code>{</code>

<code>            </code><code>thread.sleep(</code><code>200</code><code>);</code><code>//這裡怕oschina拒絕通路,休息一下</code>

<code>        </code><code>}</code><code>catch</code> <code>(interruptedexception e) {</code>

<code>            </code><code>e.printstacktrace();</code>

<code>        </code><code>}</code>

<code>        </code><code>oschinaspider.processtopic(topicid);</code>

<code>}</code>

第四步,寫一下文章處理器:

<code>public</code> <code>class</code> <code>oschinatopicprocessor</code><code>implements</code> <code>processor {</code>

<code>    </code><code>string outoutpath=</code><code>"e:\\oschina\\"</code><code>;</code>

<code>        </code><code>string filename=outoutpath+url.substring(url.lastindexof(</code><code>'/'</code><code>)+</code><code>1</code><code>)+</code><code>".page"</code><code>;</code>

<code>            </code><code>ioutils.writetooutputstream(</code><code>new</code> <code>fileoutputstream(filename),node.tostring(),</code><code>"utf-8"</code><code>);</code>

<code>        </code><code>}</code><code>catch</code> <code>(exception e) {</code>

第五步,寫一下main方法:

<code>public</code> <code>static</code> <code>void</code> <code>main(string[] args) {</code>

<code>        </code><code>processcategory(</code><code>"377413"</code><code>);</code>

第六步,看結果:

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

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"214018.page"</code><code>&gt;300粉絲集結号吹響了,可以開源重量級的流程引擎或ui引擎 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"268983.page"</code><code>&gt;tiny執行個體:tiny架構官網制作過程詳解 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"267764.page"</code><code>&gt;從應用示例來認識tiny架構 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"266707.page"</code><code>&gt;tinyrmi---rmi的封裝、擴充及踩到的坑的解決 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"233111.page"</code><code>&gt;悠然亂彈:五一部署了sonar有hudson,釋出了1.1.0正式版到maven中央倉庫 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"228712.page"</code><code>&gt;悠然亂彈:我的架構觀 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"226850.page"</code><code>&gt;tinydbf-用200行的dbf解析器來展示良好架構設計 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"225959.page"</code><code>&gt;新增tinymessage,并實作郵件接收處理 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"223310.page"</code><code>&gt;如何讓程式員更容易的開發web界面?重構smartadmin展示tinyui架構 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"221930.page"</code><code>&gt;velocity宏定義的坑與解決辦法 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"220619.page"</code><code>&gt;不一樣的味道--html及xml解析、格式化、周遊 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"214309.page"</code><code>&gt;tinyini開源了~~ &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"213622.page"</code><code>&gt;tiny分布式計算架構開源了 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"212682.page"</code><code>&gt;悠然亂彈:切身體會來說明人性化設計的重要性 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"212639.page"</code><code>&gt;tiny formater &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"206718.page"</code><code>&gt;tiny架構faq彙集 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"205733.page"</code><code>&gt;tiny架構啟動過程日志 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"205279.page"</code><code>&gt;tiny之web工程建構 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"204994.page"</code><code>&gt;開源架構tiny之内容組成 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"203075.page"</code><code>&gt;tiny後續版本需求整理 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"202825.page"</code><code>&gt;tinyui元件開發示例 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"201307.page"</code><code>&gt;tinydbrouter開源喽~~~ &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"201071.page"</code><code>&gt;tiny中文分詞 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"200604.page"</code><code>&gt;在linux下搭建tiny開發環境 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"200408.page"</code><code>&gt;一個maven工程中,不同的子產品需要不同的jdk進行編譯的解決方案 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"199515.page"</code><code>&gt;業務流程引擎 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"196486.page"</code><code>&gt;tiny并行計算架構之複雜示例 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"196373.page"</code><code>&gt;tiny并行計算架構之實作機理 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"196070.page"</code><code>&gt;tiny并行計算架構之使用介紹 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"194610.page"</code><code>&gt;tinyspider開源喽~~~ &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"194578.page"</code><code>&gt;tinyhtmlparser開源喽~~~ &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"194574.page"</code><code>&gt;tinyxmlparser開源喽~~~ &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"194551.page"</code><code>&gt;tinydbrouter &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"194413.page"</code><code>&gt;開源前要做好哪些準備工作? &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"192778.page"</code><code>&gt;分布式鎖的簡單實作 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"189259.page"</code><code>&gt;tinyioc &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"188780.page"</code><code>&gt;tinydbcluster vs routing4db &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"186637.page"</code><code>&gt;文檔生成架構 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"186583.page"</code><code>&gt;資料庫分區分片架構 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"185134.page"</code><code>&gt;分區分表支援 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"178153.page"</code><code>&gt;resetting the root password for mysql &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"177224.page"</code><code>&gt;tiny架構之内容組成 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"176153.page"</code><code>&gt;jsp放入jar包支援 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"172180.page"</code><code>&gt;流程式程式設計 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"170799.page"</code><code>&gt;強悍的上下文context &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"170763.page"</code><code>&gt;類spring ioc容器 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"170741.page"</code><code>&gt;虛拟檔案系統vfs &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"170401.page"</code><code>&gt;bigpipe為什麼可以節省時間? &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"170326.page"</code><code>&gt;xmlparser和htmlparser &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"170154.page"</code><code>&gt;線程組 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"170117.page"</code><code>&gt;流程自動化布局 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"169813.page"</code><code>&gt;涉密資料的處理 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"169553.page"</code><code>&gt;word文檔生成 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"169509.page"</code><code>&gt;如何快速開發網站? &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"169399.page"</code><code>&gt;如何讓web.xml變得簡潔? &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"169339.page"</code><code>&gt;hello,world 百态 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"169278.page"</code><code>&gt;關于中文處理方面的研究 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"169260.page"</code><code>&gt;建構網絡爬蟲?so easy &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"169206.page"</code><code>&gt;ui開發的終極解決方案 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"168896.page"</code><code>&gt;基于業務單元的開發與部署模式 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"168477.page"</code><code>&gt;一種基于主客體模型的權限管理架構 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"167430.page"</code><code>&gt;mda資料校驗規則定義 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"166930.page"</code><code>&gt;tiny之7*24叢集服務方案 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"166893.page"</code><code>&gt;tiny設計原則 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"166846.page"</code><code>&gt;建構tiny生态圈 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"166845.page"</code><code>&gt;tiny架構設計理念 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"166843.page"</code><code>&gt;基于實體模型開發主題管理簡析 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"166842.page"</code><code>&gt;mda模型定義及擴充 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"165566.page"</code><code>&gt;js、css合并帶來的效率提升 &lt;/</code><code>a</code><code>&gt;</code>

<code>&lt;</code><code>a</code> <code>href</code><code>=</code><code>"165402.page"</code><code>&gt;主題切換及其管理 &lt;/</code><code>a</code><code>&gt;</code>

生成的目錄清單:

<code>e:\oschina 的目錄</code>

<code>[.]           [..]         </code><code>165402</code><code>.page  </code><code>165566</code><code>.page  </code><code>166842</code><code>.page</code>

<code>166843</code><code>.page  </code><code>166845</code><code>.page  </code><code>166846</code><code>.page  </code><code>166893</code><code>.page  </code><code>166930</code><code>.page</code>

<code>167430</code><code>.page  </code><code>168477</code><code>.page  </code><code>168896</code><code>.page  </code><code>169206</code><code>.page  </code><code>169260</code><code>.page</code>

<code>169278</code><code>.page  </code><code>169339</code><code>.page  </code><code>169399</code><code>.page  </code><code>169509</code><code>.page  </code><code>169553</code><code>.page</code>

<code>169813</code><code>.page  </code><code>170117</code><code>.page  </code><code>170154</code><code>.page  </code><code>170326</code><code>.page  </code><code>170401</code><code>.page</code>

<code>170741</code><code>.page  </code><code>170763</code><code>.page  </code><code>170799</code><code>.page  </code><code>172180</code><code>.page  </code><code>176153</code><code>.page</code>

<code>177224</code><code>.page  </code><code>178153</code><code>.page  </code><code>185134</code><code>.page  </code><code>186583</code><code>.page  </code><code>186637</code><code>.page</code>

<code>188780</code><code>.page  </code><code>189259</code><code>.page  </code><code>192778</code><code>.page  </code><code>194413</code><code>.page  </code><code>194551</code><code>.page</code>

<code>194574</code><code>.page  </code><code>194578</code><code>.page  </code><code>194610</code><code>.page  </code><code>196070</code><code>.page  </code><code>196373</code><code>.page</code>

<code>196486</code><code>.page  </code><code>199515</code><code>.page  </code><code>200408</code><code>.page  </code><code>200604</code><code>.page  </code><code>201071</code><code>.page</code>

<code>201307</code><code>.page  </code><code>202825</code><code>.page  </code><code>204994</code><code>.page  </code><code>205279</code><code>.page  </code><code>205733</code><code>.page</code>

<code>206718</code><code>.page  </code><code>212639</code><code>.page  </code><code>212682</code><code>.page  </code><code>213622</code><code>.page  </code><code>214018</code><code>.page</code>

<code>214309</code><code>.page  </code><code>220619</code><code>.page  </code><code>221930</code><code>.page  </code><code>223310</code><code>.page  </code><code>225959</code><code>.page</code>

<code>226850</code><code>.page  </code><code>228712</code><code>.page  </code><code>233111</code><code>.page  </code><code>266707</code><code>.page  </code><code>267764</code><code>.page</code>

<code>268983</code><code>.page</code>

第7步,把檔案放入tinysite中去。

使用TinySpider實戰抓取自己部落格中的内容

爽,收工