zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JavaScript 随机产生十个整数,放入数组中,对这个数组进行降序排序,并获取到这个数组的最大值和最小值
    JavaScript输出换行
    JavaScript超时调用、间歇调用
    JavaScript内置对象
    JavaScript事件列表
    JavaScript 中 for-in和 for-of 的区别
    JavaScript break指定标签打破多层循环示例
    初识JavaScript
    HTML + CSS CSS设置背景图片后图片没有铺满屏幕等
    设计模式之工厂模式
  • 原文地址:https://www.cnblogs.com/s1-myblog/p/6196879.html
Copyright © 2011-2022 走看看