Сканирование только HTML-страниц - PullRequest
1 голос
/ 08 июля 2011

Я хочу сканировать только одни html-страницы, поэтому, когда я изменил регулярное выражение здесь, в этом коде ... он все еще сканирует некоторую xml-страницу также .. Любые предложения, почему это происходит ..

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("=============");
    }   
}

1 Ответ

3 голосов
/ 08 июля 2011

Расширение не имеет смысла в сети - особенно с новыми путями типа "SEO". Вы должны проанализировать его тип контента.

Это можно сделать, запросив (с помощью метода HTTP GET или, возможно, HEAD) каждый URL-адрес и проанализируйте заголовки его ответов. Если заголовок ответа Content-Type не тот, который вам нужен, вам не нужно его загружать - иначе это то, на что вы хотите посмотреть.

Редактировать: HTML должен иметь text/html в качестве типа контента, XHTML - application/xhtml+xml (но учтите, что последний может быть предметом согласования контента, который обычно зависит от содержимого вашего заголовка принятия и агента пользователя в запросе).

Вы можете найти всю информацию о заголовках HTTP здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...