精华内容
下载资源
问答
  • crawler4j

    2013-11-27 16:04:10
    等待了解...     源码可以从SVN直接下载: https://crawler4j.googlecode.com/svn/trunk/     网站地址:http://code.google.com/p/crawler4j/

    等待了解...

     

     

    源码可以从SVN直接下载: https://crawler4j.googlecode.com/svn/trunk/

     

     

    网站地址:http://code.google.com/p/crawler4j/

    展开全文
  • Android代码-crawler4j

    2019-08-06 08:07:44
    crawler4j crawler4j is an open source web crawler for Java which provides a simple interface for crawling the Web. Using it, you can setup a multi-threaded web crawler in few minutes. Table of ...
  • 继之前解析了crawler4j的robotstxt包之后,今天来让我们看看crawler包和exception包。crawler包中主要有以下几个类:1.Configurable:抽象配置类,这是一个抽象类,里面有一个CrawlConfig的引用。其他什么也没有了。...

    本人也是菜鸟一枚,现在刚开始接触爬虫,想通过读别人的爬虫框架源码来了解下爬虫,如有错误,请见谅并指出。

    继之前解析了crawler4j的robotstxt包之后,今天来让我们看看crawler包和exception包。

    crawler包中主要有以下几个类:

    1.Configurable:抽象配置类,这是一个抽象类,里面有一个CrawlConfig的引用。其他什么也没有了。

    2.CrawlConfig:这是一个爬虫的具体配置类,里面有许多参数,这里我只介绍几个主要的可配置的参数。

    resumableCrawling:这个变量用来控制那些已经停止的爬虫是否可以恢复。(开启了会让爬的效率降低)

    maxDepthOfCrawling:所爬取的最大深度。第一个页面是0的话,则从该页面里获取到的下一个页面深度就是1,以此类推,达到最大深度后的页面下的url都不会加入url队列。

    maxPagesToFetch:最多的爬取数量。

    politenessDelay:发送2个请求的间隔时间

    includeBinaryContentInCrawling和processBinaryContentInCrawling:是否处理二进制内容,如图像。

    userAgentString:爬虫名

    proxyHost和proxyPort:代理服务器地址和端口。(关于代理可以自行百度,简单说下,就是你的爬虫先向代理服务器发送http请求,若代理服务器上有最新结果直接返回,否则由代理服务器向web服务器发送并得到结果返回)

    还有一些参数就不一一讲了。(有些http连接和超时的参数,还有些没搞懂,如onlineTldListUpdate)

    3.WebCrawler:爬虫类,实现了Runnable。既然实现了Runnable这里首先来看下run方法

    public void run() {

    onStart();

    while (true) {

    List assignedURLs = new ArrayList<>(50);

    isWaitingForNewURLs = true;

    frontier.getNextURLs(50, assignedURLs);

    isWaitingForNewURLs = false;

    if (assignedURLs.isEmpty()) {

    if (frontier.isFinished()) {

    return;

    }

    try {

    Thread.sleep(3000);

    } catch (InterruptedException e) {

    logger.error("Error occurred", e);

    }

    } else {

    for (WebURL curURL : assignedURLs) {

    if (myController.isShuttingDown()) {

    logger.info("Exiting because of controller shutdown.");

    return;

    }

    if (curURL != null) {

    curURL = handleUrlBeforeProcess(curURL);

    processPage(curURL);

    frontier.setProcessed(curURL);

    }

    }

    }

    }

    }

    onStart()方法默认是空方法,但我们可以重写这个方法定制在爬虫开始前的一些配置。然后自己的队列里没有url了就从全局url队列里取,若也没有则结束爬虫。若有url且控制器未关闭则处理,最后告诉全局url控制器Frontier这个url处理过了。

    接着我们来看下处理页的方法,这里贴出主要逻辑

    fetchResult = pageFetcher.fetchPage(curURL);//获取结果集

    Page page = new Page(curURL);//new 一个page

    page.setFetchResponseHeaders(fetchResult.getResponseHeaders());

    page.setStatusCode(statusCode);

    //status code is 200

    if (!curURL.getURL().equals(fetchResult.getFetchedUrl())) {

    if (docIdServer.isSeenBefore(fetchResult.getFetchedUrl())) {

    throw new RedirectException(Level.DEBUG, "Redirect page: " + curURL + " has already been seen");

    }

    curURL.setURL(fetchResult.getFetchedUrl());

    curURL.setDocid(docIdServer.getNewDocID(fetchResult.getFetchedUrl()));

    }

    parser.parse(page, curURL.getURL());//解析到page中

    ParseData parseData = page.getParseData();

    for (WebURL webURL : parseData.getOutgoingUrls()) {

    int newdocid = docIdServer.getDocId(webURL.getURL());

    if (newdocid > 0) {//对于已经访问过的,深度设置为-1

    // This is not the first time that this Url is visited. So, we set the depth to a negative number.

    webURL.setDepth((short) -1);

    webURL.setDocid(newdocid);

    }else {//加入url队列

    webURL.setDocid(-1);

    webURL.setDepth((short) (curURL.getDepth() + 1));

    if (shouldVisit(page, webURL)) {//满足访问要求,我们可以重写此方法定制自己要访问的页面

    webURL.setDocid(docIdServer.getNewDocID(webURL.getURL()));

    toSchedule.add(webURL);

    }

    }

    //加入全局url队列

    frontier.scheduleAll(toSchedule);

    //重写此方法处理获取到的html代码

    visit(page);

    里面有许多细节忽略了,不过一次状态码为200的http请求处理过程大致是这样了。

    4.Page:代表一个页面,存储了页面的相关信息

    5.CrawlController:爬虫控制器。这是一个总控制器,用来开启爬虫并监视各个爬虫状态。构造函数需要CrawlConfig,PageFetcher和RobotstxtServer。通过addSeed(String)方法来添加种子(最一开始爬虫所爬的页面),可添加多个。然后通过start方法开始爬取。start方法需要传递一个继承WebCrawler的类的Class对象和开启爬虫的数量。让我们来看下这个start方法

    for (int i = 1; i <= numberOfCrawlers; i++) {//创建爬虫

    T crawler = crawlerFactory.newInstance();

    Thread thread = new Thread(crawler, "Crawler " + i);

    crawler.setThread(thread);

    crawler.init(i, this);

    thread.start();

    crawlers.add(crawler);

    threads.add(thread);

    logger.info("Crawler {} started", i);

    }

    //接下来开启一个监视线程,

    Thread monitorThread = new Thread(new Runnable() {

    @Override

    public void run() {

    try {

    synchronized (waitingLock) {

    while (true) {

    sleep(10);

    boolean someoneIsWorking = false;

    for (int i = 0; i 

    Thread thread = threads.get(i);

    if (!thread.isAlive()) {

    if (!shuttingDown) {//重启爬虫

    logger.info("Thread {} was dead, I'll recreate it", i);

    T crawler = crawlerFactory.newInstance();

    thread = new Thread(crawler, "Crawler " + (i + 1));

    threads.remove(i);

    threads.add(i, thread);

    crawler.setThread(thread);

    crawler.init(i + 1, controller);

    thread.start();

    crawlers.remove(i);

    crawlers.add(i, crawler);

    }

    } else if (crawlers.get(i).isNotWaitingForNewURLs()) {

    someoneIsWorking = true;

    }

    }

    boolean shut_on_empty = config.isShutdownOnEmptyQueue();

    //没有爬虫在工作且,队列为空时关闭

    if (!someoneIsWorking && shut_on_empty) {

    // Make sure again that none of the threads

    // are

    // alive.

    logger.info("It looks like no thread is working, waiting for 10 seconds to make sure...");

    sleep(10);

    someoneIsWorking = false;

    //再次检查各个线程爬虫

    for (int i = 0; i 

    Thread thread = threads.get(i);

    if (thread.isAlive() && crawlers.get(i).isNotWaitingForNewURLs()) {

    someoneIsWorking = true;

    }

    }

    if (!someoneIsWorking) {

    if (!shuttingDown) {

    //队列里还有要爬取的页面

    long queueLength = frontier.getQueueLength();

    if (queueLength > 0) {

    continue;

    }

    logger.info(

    "No thread is working and no more URLs are in queue waiting for another 10 seconds to make " +

    "sure...");

    sleep(10);

    //又判断了一次,这里进行了2次判断,防止出现伪结束

    queueLength = frontier.getQueueLength();

    if (queueLength > 0) {

    continue;

    }

    }

    //所有爬虫都结束了,关闭各个服务

    logger.info("All of the crawlers are stopped. Finishing the process...");

    frontier.finish();

    for (T crawler : crawlers) {

    crawler.onBeforeExit();

    crawlersLocalData.add(crawler.getMyLocalData());

    }

    logger.info("Waiting for 10 seconds before final clean up...");

    sleep(10);

    frontier.close();

    docIdServer.close();

    pageFetcher.shutDown();

    finished = true;

    waitingLock.notifyAll();

    env.close();

    return;

    }

    }

    }

    }

    } catch (Exception e) {

    logger.error("Unexpected Error", e);

    }

    }

    });

    monitorThread.start();

    其实还有许多细节没有解析,不得不佩服大神啊,光是看看都觉得太厉害了。不过还是希望能从这里学到些东西的。

    展开全文
  • Is crawler4j support xpath

    2021-01-10 09:37:54
    <div><p>I want to ask again. Is crawler4j support xpath? <p>If it is yes. How to use xpath on crawler4j? <p>Thanks</p><p>该提问来源于开源项目:yasserg/crawler4j</p></div>
  • crawler4j所有依赖包

    2016-12-06 11:00:09
    开源爬虫项目crawler4j所有依赖包
  • crawler4j-4.3 jar包

    2019-01-14 10:44:12
    crawler4j 爬虫jar包,直接引进项目中即可使用。
  • <div><p>Can anyone suggest me, about how to go directly to certain depth instead of storing data of all pages. i.e. From A->B->C, if I have to go to C without storing...yasserg/crawler4j</p></div>
  • crawler4j 学习

    2016-12-19 11:39:00
    crawler4j 学习(一) crawler4j是一个轻量级多线程网络爬虫,开发者可以调用相应的接口在短时间内创建一个多线程网络爬虫。 前期准备 使用maven 为了使用最近版本的crawler4j,请将下面的片段添加到你的pom....

    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

    转载于:https://www.cnblogs.com/s1-myblog/p/6196879.html

    展开全文
  • 我们先从一个最原始的Java爬虫demo开始,再来看如何使用crawler4j这个框架进行爬虫。Demo使用Java的Url对象,指向网址并建立连接,获取输入流,解析流中的信息。该Demo只需一个jdk即可,不用引入其他jar包,下面请看...

    现今比较流行的爬虫语言,属Java、paython和c语言,笔者学习的是Java语言,所以介绍下使用Java如何爬取网页信息。

    我们先从一个最原始的Java爬虫demo开始,再来看如何使用crawler4j这个框架进行爬虫。

    Demo

    使用Java的Url对象,指向网址并建立连接,获取输入流,解析流中的信息。该Demo只需一个jdk即可,不用引入其他jar包,下面请看源码。

    public static void main(String[] args) throws IOException {
    
            //新建一个url对象 通过构造方法传入url值
            URL url = new URL("https://www.jd.com/");
            //建立Java和url的一个连接,相当于我们访问网址,不同的是Java返回的是connection 我们肉眼返回的是网页内容
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            //通过相应状态码判断是否访问成功
            int code = connection.getResponseCode();
            if (code != 200) {
                return;
            }
            //获取connection对网页访问之后 的一个输入流,该流中包含了网页的信息内容
            InputStream stream = connection.getInputStream();
            //通过BufferedReader 获取流中的信息
            BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf-8"));
            //输出信息
            String r = null;
            while ((r = reader.readLine()) != null) {
                System.out.println(r);
            }
        }

    这里的url传入时必须要带http协议,不能只传入jd.com,否则会报异常:

    Exception in thread "main" java.net.MalformedURLException: no protocol: jd.com

    我们看一下输出内容(仅截取了一小部分内容):

    <!DOCTYPE HTML>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <title>京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!</title>
      <meta name="description" content="京东JD.COM-专业的综合网上购物商城,销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品等数万个品牌优质商品.便捷、诚信的服务,为您提供愉悦的网上购物体验!" />
      <meta name="Keywords" content="网上购物,网上商城,手机,笔记本,电脑,MP3,CD,VCD,DV,相机,数码,配件,手表,存储卡,京东" />
      <script type="text/javascript">
        window.pageConfig = {
          compatible: true,
          preload: false,
          navId: "jdhome2016",
    	  timestamp: 1521683291000, 
          isEnablePDBP: 0,,
    		surveyTitle : "调查问卷",
    		surveyLink : "//surveys.jd.com/index.php?r=survey/index/sid/889711/newtest/Y/lang/zh-Hans",
    		leftCateABtestSwitch : 0,
    		"" : ""
        };

    至此,一个简单的爬虫就已经实现完成了。原理很简单:使用Url对象,指向网址并建立连接,获取输入流,解析流中的信息,根据获取的信息内容,筛选出自己的需求信息即可。当然,这几行代码可能远远不能满足我们的需求,所以市场上有了很多开源的Java爬虫框架,例如nutch、Heritrixcrawler4j等等,具体有何区别,请点击这里。

    下面我们进入正题,如何运用crawler4j进行快速爬虫。github源码下载



    根据github上的源码和readme.md文档,可以很快使用crawler4j进行爬虫。有一定英语基础可以看看readme.md文档

    crawler4j is an open source web crawler for Java which provides a simple interface for crawling the Web. Using it, you can setup a multi-threaded web crawler in few minutes.

    上面介绍说,crawler4j是一个开源的爬虫框架,可以快速建立一个多线程爬取网站的程序,而且几分钟之内就能完成编码。

    第一步:如果读者使用过maven,可以很轻松的使用maven的pom引入即可。

        <repositories>
            <repository>
                <id>onebeartoe</id>
                <name>onebeartoe</name>
                <url>https://repository-onebeartoe.forge.cloudbees.com/snapshot/</url>
            </repository>
        </repositories>
        
        <dependencies>
            <dependency>
                <groupId>edu.uci.ics</groupId>
                <artifactId>crawler4j</artifactId>
                <version>4.4-SNAPSHOT</version>
            </dependency>
        </dependencies>

    如果你没有用过maven那么,你需要把源码打成jar包,然后引入jar包,使用即可。

    第二步:创建一个crawler类继承WebCrawler ,并重写两个方法,如下:

    public class MyCrawler2 extends WebCrawler {
        @Override
        public boolean shouldVisit(Page referringPage, WebURL url) {
            //这个方法的作用是过滤不想访问的url 
            //return false时  url被过滤掉不会被爬取
            return super.shouldVisit(referringPage, url);
        }
        @Override
        public void visit(Page page) {
            //这个方法的作用是当shouldVisit方法返回true时,调用该方法,获取网页内容,已被封装到Page对象中
            super.visit(page);
        }
    }

    第三步:创建一个controller类(实际任意类都行),创建main方法,根据官方文档,只需修改线程数量和url就行了。该url可以被称为种子,只要传入一个url,crawler4j就会根据url中的内容获取页面中所有的url然后再次爬取,周而复始,但重复的网址不会重复爬取,不会出现死循环。

    public class Controller {
        public static void main(String[] args) throws Exception {
            String crawlStorageFolder = "/data/crawl/root";//文件存储位置
            int numberOfCrawlers = 7;//线程数量
    
            CrawlConfig config = new CrawlConfig();
            config.setCrawlStorageFolder(crawlStorageFolder);//配置对象设置
    
            PageFetcher pageFetcher = new PageFetcher(config);
            RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
            RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
            CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer);//创建
    
            controller.addSeed("http://www.ics.uci.edu/~lopes/");//传入的url
    
            controller.start(MyCrawler.class, numberOfCrawlers);//开始执行爬虫
        }
    }
    

    启动main方法就可以完成网页的爬取了。

    使用maven方式仅仅引入以上的pom文件,会有个问题,启动的时候总是报错,

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy
    	at com.chenyao.Controller.main(Controller.java:25)
    Caused by: java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy 
    
    这个真是百思不得其解,后来网上搜了一下这个错误。导入了两个jar包就可以了,版本一定要高。
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>4.4</version>
            </dependency>
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.4.1</version>
            </dependency>
    

    下面写一个实例,爬取京东商品信息


    1.控制器

    public class Controller {
        public static void main(String[] args) throws Exception {
            String crawlStorageFolder = "/data/crawl/root";//文件存储位置
            int numberOfCrawlers = 1;//线程数量
    
            CrawlConfig config = new CrawlConfig();
            config.setCrawlStorageFolder(crawlStorageFolder);//配置信息设置
    
            PageFetcher pageFetcher = new PageFetcher(config);
            RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
            RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
            CrawlController controller = new CrawlController(config, pageFetcher, robotstxtServer);//创建爬虫执行器
     
            controller.addSeed("https://search.jd.com/Search?keyword=笔记本&enc=utf-8&wq=笔记本");//传入种子 要爬取的网址
    
            controller.start(MyCrawler2.class, numberOfCrawlers);//开始执行爬虫
    

    2.爬虫类,这里的两个实现方法尤为重要,控制器只是一个访问的入口,具体访问规则和访问结果的获取都是在这两个方法中实现。

    查看京东关键词搜索之后的html规则,发现商品都在<li>标签中

    继续展开<li>标签,看到该商品的具体信息,这里笔者爬取图片连接,其他信息依然可以根据读者需求自定义爬取


    public class MyCrawler2 extends WebCrawler {
           //自定义过滤规则
         private final static Pattern FILTERS = Pattern.compile(".*(\\.(css|js|gif|jpg|png|mp3|mp4|zip|gz))$");
        @Override
        public boolean shouldVisit(Page referringPage, WebURL url) {
            String href = url.getURL().toLowerCase();//爬取的网址 转小写
            //这里定义过滤的网址,我的需求是只爬取京东搜索出来的页面中的商品,url需要以https://search.jd.com/search开头
            boolean b =!FILTERS.matcher(href).matches()&&href.startsWith("https://search.jd.com/search");
            return b;
        }
    
        @Override
        public void visit(Page page) {
            String url = page.getWebURL().getURL();
            System.out.println(url);
            //判断page是否为真正的网页
            if (page.getParseData() instanceof HtmlParseData) {
                HtmlParseData htmlParseData = (HtmlParseData) page.getParseData();
                String html = htmlParseData.getHtml();//页面html内容
                Document doc = Jsoup.parse(html);//采用jsoup解析html,这个大家不会可以简单搜一下
    
                //使用选择器的时候需要了解网页中的html规则,自己去网页中F12一下,
                Elements elements = doc.select(".gl-item");
                if(elements.size()==0){
                    return;
                }
                for (Element element : elements) {
                    Elements img = element.select(".err-product");
                    if(img!=null){
                           //输出图片链接
                         System.out.println(img.attr("src"));
                        System.out.println(img.attr("data-lazy-img"));
                    }
                }
            }
        }
    
    }

    看一下运行结果:


    not-visiting就是被过滤的url

    下面输出的是图片的链接

    使用Crawler4j确实很方便。而且有点傻瓜式。读者可以自己试一下爬取网页给自己带来的乐趣

    展开全文
  • crawler4j crawler4j是Java的开源Web爬网程序,它提供了用于爬网的简单界面。 使用它,您可以在几分钟内设置多线程Web搜寻器。 表中的内容 安装 使用Maven 将以下依赖项添加到pom.xml中: < groupId>edu.uci....
  • 利用crawler4j爬虫框架,对网易公开课进行爬取。crawler4j是极易上手的框架,只需要设置过滤规则和解析规则,就可以写出多线程的爬虫。
  • crawler4j 继续执行正在实现搜索引擎的Programming Collection Intelligence (PCI)的第4章。 我可能比做一次运动所咬的东西要多。 我认为,与其使用本书中所使用的常规关系数据库结构,不如说我一直想看看Neo4J...
  • Crawler4j 快速入门

    千次阅读 2017-08-04 10:11:04
    crawler4j是Java实现的开源网络爬虫。提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫 crawler4j中用了slf4j来记录项目运行日志信息。我们使用slf4j具体实现类log4j 创建一个maven项目。在pom.xml贴上...
  • 第一步:如果读者使用过maven,可以很轻松的使用maven...第二步:创建一个crawler类继承WebCrawler ,并重写两个方法,如下:public class MyCrawler2 extends WebCrawler {@Overridepublic boolean shouldVisit(P...
  • crawler4j爬虫入门

    千次阅读 2016-12-08 22:19:26
    crawler4j是一个短小精悍的爬虫。 二、下载crawler4j源码 项目主页:https://code.google.com/p/crawler4j/。 用Git把源码下下来导入eclipse 爬虫业务逻辑在src/main/java下,可直接运行src/test/java下edu.uci....
  • Crawler4j学习笔记

    2019-09-26 19:56:54
    Crawler4j概述 crawler4j是一款基于Java的轻量级单机开源爬虫框架,最大的一个特点就是简单。另外也支持多线程、支持代理、可以过滤重复URL 基本上从加载jar到工程里面 通过修改示例的代码就可以简单的实现一个爬虫...
  • 使用crawler4j非常简单,源码中已经包涵了很多的例子,并且是直接就可以运行的。 1. 运行Example 2. 爬取指定网站 3. 输出指定信息 4. 爬取指定规则页面 5. 爬取指定数量和深度的页面
  • java多线程爬虫框架crawler4j的使用-附件资源
  • <div><p>I tried to set up a crawler project. But the form authentication or basic authentication is not at all working. what changes I need to incorporate with my java class...yasserg/crawler4j</p></div>
  • crawler4j是Java实现的开源网络爬虫。提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫。
  • crawler4j源码解析

    2016-05-16 20:56:37
    controller为crawler4j的控制类的实例,start方法为crawler4j的执行任务的入口。 MyCrawler为爬虫类,负责控制url抓取规则的制定和页面的解析及数据持久化等等
  • Crawler4j的使用

    万次阅读 2013-10-26 14:50:07
    Crawler4j的使用 (以下内容全部为转载,供自己查阅用) 下载地址: http://code.google.com/p/crawler4j/ Crawler4j的使用 网上对于crawler4j这个爬虫的使用的文章很少,Google到的几乎没有,只能自己...
  • Crawler4j快速入门实例

    2018-03-07 11:12:17
    本章来源:...crawler4j中用了slf4j来记录项目运行日志信息。我们使用slf4j具体实现类log4j;首先我们在pom.xml中加入log4j以及log4j驱动类支持;&lt;!-- 加入log4j支持...
  • crawler4j 爬爬知多少

    2017-11-07 19:50:00
     crawler4j是一个开源的java爬虫类库,可以用来构建多线程的web爬虫来抓取页面内容。  2. 如何获取Crawler?  crawler4j的官方地址在这里,目前版本为4.1。如果你使用Maven,可以通过下面的pom的方式,如直接...
  • crawler4j简单总结

    千次阅读 2016-04-11 10:46:22
    最近在需要用到爬虫,学习了crawler4j这个简单易用的爬虫框架。 1,crawler4j有两个核心类,一个是webcrawler ,负责写url的匹配规则,解析html页面,提取数据等相关的代码 2,controller 这个类负责控制爬虫,比如...
  • crawler4j对response没有指定编码的页面,解析成乱码,很让人烦恼,下面给出解决方法,需要的朋友可以参考下
  • 爬虫_Crawler4j的使用

    2016-05-03 21:33:00
    Crawler4j的使用 (以下内容全部为转载,供自己查阅用) 下载地址: http://code.google.com/p/crawler4j/ Crawler4j的使用 网上对于crawler4j这个爬虫的使用的文章很少,Google到的几乎没有,只能自己...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 441
精华内容 176
关键字:

crawler4j