2011-07-08 12 views
1

、私はそれはまだ任意の提案は、なぜそれが起こっている...また、いくつかのXMLページをクロールしている..私はこのコードでは、ここで正規表現を変更したときにそうニルhtmlページをクロールする...のみをクロールHTMLページ

public class MyCrawler extends WebCrawler { 


    Pattern filters = Pattern.compile("(.(html))"); 

    public MyCrawler() { 
    } 

    public boolean shouldVisit(WebURL url) { 
     String href = url.getURL().toLowerCase(); 
     if (filters.matcher(href).matches()) { 
      return false; 
     } 
     if (href.startsWith("http://www.somehost.com/")) { 
      return true; 
     } 
     return false; 
    } 

    public void visit(Page page) { 
     int docid = page.getWebURL().getDocid(); 

     String url = page.getWebURL().getURL();   
     String text = page.getText(); 
     List<WebURL> links = page.getURLs(); 
     int parentDocid = page.getWebURL().getParentDocid(); 

     System.out.println("Docid: " + docid); 
     System.out.println("URL: " + url); 
     System.out.println("Text length: " + text.length()); 
     System.out.println("Number of links: " + links.size()); 
     System.out.println("Docid of parent page: " + parentDocid); 
     System.out.println("============="); 
    } 
} 
+0

@ルセロ:それは答えでなければなりません。 –

+0

@Lucero、返信ありがとう..ありがとう、xhtmlについて指摘してくれてありがとう、私はhtmlとxhtmlの両方のためにこれをやりたいと思っています。だから、この場合はcontent-typeを分析してhtmlとxhtmlだけをクロールできます.. – ferhan

+0

@ジム、本当に本当の答えのように感じなかった。 ;) – Lucero

答えて

3

拡張機能はウェブ上で意味がありません - 特に新しい "SEO"タイプのパスがある。そのコンテンツタイプを分析する必要があります。

各URLを(HTTP GETまたはおそらくHEADメソッドで)要求し、その応答ヘッダーを分析することでこれを行うことができます。 Content-Typeレスポンスヘッダーが必要なものでない場合は、ダウンロードする必要はありません。そうでない場合は、見たいものです。

編集:HTMLはXHTMLがapplication/xhtml+xmlで、コンテンツタイプとしてtext/htmlを持っている(ただし、後者はリクエストであなたの受け入れヘッダの内容とユーザエージェントに通常依存しているコンテンツネゴシエーション、の対象となる可能性があることに注意すべきです)。

HTTPヘッダーhereに関するすべての情報が見つかります。

+0

返信ありがとう..ありがとう、xhtmlを指摘してくれてありがとう、私はhtmlとxhtmlの両方のためにこれをやりたいと思っています..このようにして、htmlとxhtmlだけをクロールするようにコンテンツタイプを分析する方法は? – ferhan

+0

@Raihan、詳細情報を追加しました。 – Lucero