因为做官网,没有内容,因此就想办法从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<htmlnode> nodefilter =</code><code>new</code> <code>quicknamefilter<htmlnode>();</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>"<a href=\"%s.page\">%s</a>\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><</code><code>a</code> <code>href</code><code>=</code><code>"214018.page"</code><code>>300粉丝集结号吹响了,可以开源重量级的流程引擎或ui引擎 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"268983.page"</code><code>>tiny实例:tiny框架官网制作过程详解 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"267764.page"</code><code>>从应用示例来认识tiny框架 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"266707.page"</code><code>>tinyrmi---rmi的封装、扩展及踩到的坑的解决 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"233111.page"</code><code>>悠然乱弹:五一部署了sonar有hudson,发布了1.1.0正式版到maven中央仓库 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"228712.page"</code><code>>悠然乱弹:我的架构观 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"226850.page"</code><code>>tinydbf-用200行的dbf解析器来展示良好架构设计 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"225959.page"</code><code>>新增tinymessage,并实现邮件接收处理 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"223310.page"</code><code>>如何让程序员更容易的开发web界面?重构smartadmin展示tinyui框架 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"221930.page"</code><code>>velocity宏定义的坑与解决办法 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"220619.page"</code><code>>不一样的味道--html及xml解析、格式化、遍历 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"214309.page"</code><code>>tinyini开源了~~ </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"213622.page"</code><code>>tiny分布式计算框架开源了 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"212682.page"</code><code>>悠然乱弹:切身体会来说明人性化设计的重要性 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"212639.page"</code><code>>tiny formater </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"206718.page"</code><code>>tiny框架faq汇集 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"205733.page"</code><code>>tiny框架启动过程日志 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"205279.page"</code><code>>tiny之web工程构建 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"204994.page"</code><code>>开源框架tiny之内容组成 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"203075.page"</code><code>>tiny后续版本需求整理 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"202825.page"</code><code>>tinyui组件开发示例 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"201307.page"</code><code>>tinydbrouter开源喽~~~ </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"201071.page"</code><code>>tiny中文分词 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"200604.page"</code><code>>在linux下搭建tiny开发环境 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"200408.page"</code><code>>一个maven工程中,不同的模块需要不同的jdk进行编译的解决方案 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"199515.page"</code><code>>业务流程引擎 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"196486.page"</code><code>>tiny并行计算框架之复杂示例 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"196373.page"</code><code>>tiny并行计算框架之实现机理 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"196070.page"</code><code>>tiny并行计算框架之使用介绍 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"194610.page"</code><code>>tinyspider开源喽~~~ </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"194578.page"</code><code>>tinyhtmlparser开源喽~~~ </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"194574.page"</code><code>>tinyxmlparser开源喽~~~ </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"194551.page"</code><code>>tinydbrouter </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"194413.page"</code><code>>开源前要做好哪些准备工作? </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"192778.page"</code><code>>分布式锁的简单实现 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"189259.page"</code><code>>tinyioc </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"188780.page"</code><code>>tinydbcluster vs routing4db </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"186637.page"</code><code>>文档生成框架 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"186583.page"</code><code>>数据库分区分片框架 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"185134.page"</code><code>>分区分表支持 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"178153.page"</code><code>>resetting the root password for mysql </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"177224.page"</code><code>>tiny框架之内容组成 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"176153.page"</code><code>>jsp放入jar包支持 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"172180.page"</code><code>>流程式编程 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"170799.page"</code><code>>强悍的上下文context </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"170763.page"</code><code>>类spring ioc容器 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"170741.page"</code><code>>虚拟文件系统vfs </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"170401.page"</code><code>>bigpipe为什么可以节省时间? </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"170326.page"</code><code>>xmlparser和htmlparser </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"170154.page"</code><code>>线程组 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"170117.page"</code><code>>流程自动化布局 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"169813.page"</code><code>>涉密数据的处理 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"169553.page"</code><code>>word文档生成 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"169509.page"</code><code>>如何快速开发网站? </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"169399.page"</code><code>>如何让web.xml变得简洁? </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"169339.page"</code><code>>hello,world 百态 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"169278.page"</code><code>>关于中文处理方面的研究 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"169260.page"</code><code>>构建网络爬虫?so easy </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"169206.page"</code><code>>ui开发的终极解决方案 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"168896.page"</code><code>>基于业务单元的开发与部署模式 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"168477.page"</code><code>>一种基于主客体模型的权限管理框架 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"167430.page"</code><code>>mda数据校验规则定义 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"166930.page"</code><code>>tiny之7*24集群服务方案 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"166893.page"</code><code>>tiny设计原则 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"166846.page"</code><code>>构建tiny生态圈 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"166845.page"</code><code>>tiny框架设计理念 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"166843.page"</code><code>>基于实体模型开发主题管理简析 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"166842.page"</code><code>>mda模型定义及扩展 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"165566.page"</code><code>>js、css合并带来的效率提升 </</code><code>a</code><code>></code>
<code><</code><code>a</code> <code>href</code><code>=</code><code>"165402.page"</code><code>>主题切换及其管理 </</code><code>a</code><code>></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中去。
爽,收工