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

  • 相关阅读:
    Dactor 一个好用的基于协程的全异步框架,适合复杂异步流程
    mysql原表增加字段且设置默认值及修改字段默认值
    js扩展
    mysql建表且设置主键自增
    mysql事务的实现方式——mvvc+锁
    mysql排他锁
    mysql的共享锁
    mysql的体系结构及sql的执行路径
    小程序 使用echarts 数据动态变换
    js 整理 前端知识点 前端面试题 (2020)(vue)
  • 原文地址:https://www.cnblogs.com/s1-myblog/p/6196879.html
Copyright © 2011-2022 走看看