crawler4j 學習


crawler4j 學習(一)

crawler4j是一個輕量級多線程網絡爬蟲,開發者可以調用相應的接口在短時間內創建一個多線程網絡爬蟲。

前期准備

使用maven

為了使用最近版本的crawler4j,請將下面的片段添加到你的pom.xml文件中。

<dependency>
    <groupId>edu.uci.ics</groupId>
    <artifactId>crawler4j</artifactId>
    <version>4.1</version>
</dependency>

 

不沒有maven項目

crawler4j JARs 可以在發行的版本頁面和Maven Central(應該是maven中心)找到。

如果你沒有maven項目卻想使用crawler4j,注意crawler4j jar文件有幾個外部的依賴。在最近的版本中,你可以發現一個命名為crawler4j-X Y -with-dependencies.jar包含了所有的依賴的捆綁。你可以下載下來並且將它添加到你的classpath下獲得所有的依賴。

過程

使用crawler4j需要創建一個繼承WebCrawler的爬蟲類。

 

public class MyCrawler extends WebCrawler {

    private final static Pattern FILTERS = Pattern.compile(".*(\\.(css|js|gif|jpg"
                                                           + "|png|mp3|mp3|zip|gz))$");

    /**
     * 這個方法有兩個參數。第一個參數是我們發現的新的URL的頁面並且第二個參數是新的URL。
   * 你應該實現這個方法去指定這個被給的URL是不是應該去爬取。在這個例子中,我們指導
   * 爬蟲去忽視有CSS,JS,git等的URL並且知識獲得了以“http://www.ics.uci.edu/”
* 開頭的URL。在這種情況下,我們不需要用參考頁面這個參數來做決定。
*/ @Override public boolean shouldVisit(Page referringPage, WebURL url) { String href = url.getURL().toLowerCase(); return !FILTERS.matcher(href).matches() && href.startsWith("http://www.ics.uci.edu/"); } /** * 這個功能是抓取准備被你的項目處理的頁面 */ @Override public void visit(Page page) { String url = page.getWebURL().getURL(); System.out.println("URL: " + url); if (page.getParseData() instanceof HtmlParseData) { HtmlParseData htmlParseData = (HtmlParseData) page.getParseData(); String text = htmlParseData.getText(); String html = htmlParseData.getHtml(); Set<WebURL> links = htmlParseData.getOutgoingUrls(); System.out.println("Text length: " + text.length()); System.out.println("Html length: " + html.length()); System.out.println("Number of outgoing links: " + links.size()); } } }

 

上面的例子覆蓋了兩個主要方法:

  • shouldVisit:這個方法決定了要抓取的URL及其內容,例子中只允許抓取“www.ics.uci.edu”這個域的頁面,不允許.css、.js和多媒體等文件。
  • visit:當URL下載完成會調用這個方法。你可以輕松獲取下載頁面的url, 文本, 鏈接, html,和唯一id等內容。

 補充:

search engines

 參考頁面:http://www.cnblogs.com/s1-myblog/p/6197426.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM