(1)作得好,作得快,只能選擇同樣。html
(2)時間過得很快,你無法在假期的一天裏完成更多的計劃。假期所有由本身支配,相對長一點的睡眠,新加入的娛樂(視頻或者遊戲),你不比在工做中更有效率。java
(3)天天練習一點,記錄下來。假期來整合優化鞏固,是最好的選擇。進步每一天。node
(4)不要太期待假期。git
(5)參照Nutz 入門教程第一講,作一個小應用。 視頻不清晰仍是看完兩遍,仍是照着一點點的寫出來。視頻比較直觀,Nutz的文檔很詳細的,可是任然以爲看視頻仍是更快,看文檔太慢了,或許我看文檔的方式要改進下。github
(6)JAVA爬蟲 WebCollector: web
官網、API、osc簡介、Cookbook&Api、ide
一個讀取API的例子:MyParser.java, DocCrawler.java優化
package demo.hello; import java.io.UnsupportedEncodingException; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import cn.edu.hfut.dmic.webcollector.model.Link; import cn.edu.hfut.dmic.webcollector.model.Page; import cn.edu.hfut.dmic.webcollector.parser.HtmlParser; import cn.edu.hfut.dmic.webcollector.parser.ParseResult; public class MyParser extends HtmlParser{ public MyParser(Integer topN) { super(topN); } @Override public ParseResult getParse(Page page) throws UnsupportedEncodingException { ParseResult parseResult= super.getParse(page); Elements frames=page.getDoc().select("frame[src]"); for(Element frame:frames){ Link link=new Link(); link.setAnchor(""); link.setUrl(frame.attr("abs:src")); parseResult.getParsedata().getLinks().add(link); } return parseResult; } }
package demo.hello; import cn.edu.hfut.dmic.webcollector.crawler.BreadthCrawler; import cn.edu.hfut.dmic.webcollector.model.Page; import cn.edu.hfut.dmic.webcollector.parser.Parser; import cn.edu.hfut.dmic.webcollector.util.Config; public class DocCrawler extends BreadthCrawler{ @Override public Parser createParser(String url, String contentType) throws Exception { if(contentType==null) return null; if(!contentType.contains("text/html")) return null; return new MyParser(Config.topN); } public static void main(String[] args) throws Exception{ DocCrawler crawler=new DocCrawler(); crawler.addSeed("http://crawlscript.github.io/WebCollectorDoc/"); crawler.addRegex("http://crawlscript.github.io/WebCollectorDoc.*"); crawler.setRoot("pages"); crawler.setThreads(20); crawler.start(10); } }