天天看点

使用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实战抓取自己博客中的内容

爽,收工