• 寒假学习(三)北京市政百姓信件分析


    首先,需要采集北京市政百姓信件内容,通过网络爬虫,找到有用的信息。

    网络爬虫由控制节点、爬虫节点、资源库构成。

    网络爬虫中可以有多个控制节点,每个控制节点下可以有多个爬虫节点,控制节点之间可以互相通信,同时,控制节点和其下的各爬虫节点之间也可以进行互相通信,属于同一个控制节点下的各爬虫节点间,亦可以互相通信。

    控制节点,也叫作爬虫的中央控制器,主要负责根据URL地址分配线程,并调用爬虫节点进行具体的爬行。

    爬虫节点会按照相关的算法,对网页进行具体的爬行,主要包括下载网页以及对网页的文本进行处理,爬行后,会将对应的爬行结果存储到对应的资源库中。

    WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。

    WebMagic的设计参考了业界最优秀的爬虫Scrapy,而实现则应用了HttpClient、Jsoup等Java世界最成熟的工具,目标就是做一个Java语言Web爬虫的教科书般的实现。

    import us.codecraft.webmagic.Page;  
    import us.codecraft.webmagic.Site;  
    import us.codecraft.webmagic.processor.PageProcessor;  
      
    public class Getgov implements PageProcessor {  
      
        @Override  
        public Site getSite() {  
            return null;  
        }  
      
        @Override  
        public void process(Page arg0) {  
        }  
    } 
    package my.webmagic;  
    import us.codecraft.webmagic.Page;  
    import us.codecraft.webmagic.Site;  
    import us.codecraft.webmagic.Spider;  
    import us.codecraft.webmagic.pipeline.FilePipeline;  
    import us.codecraft.webmagic.processor.PageProcessor;  
    import us.codecraft.webmagic.scheduler.FileCacheQueueScheduler;  
    public class Getgov implements PageProcessor {  
        private Site site = Site.me().setRetryTimes(3).setSleepTime(100);  
        public void process(Page page) {  
            page.putField("allhtml", page.getHtml().toString());  
            String urlstr null;  
            for (int i = 1; i < 2702; i++) {  
                urlstr = "http://rexian.beijing.gov.cn/default/com.web.index.moreNewLetterQuery.flow?PageCond/currentPage="  
                        + i + "&type=nextPage";  
                page.addTargetRequest(urlstr);  
                page.addTargetRequests(page.getHtml().links()  
                        .regex("(com.web.\w+.\w+.flow\?originalId=\w+)").all());  
            }  
        }  
        public Site getSite() {  
            return site;  
        }  
        public static void main(String[] args) {  
            Spider.create(new Getgov())  
                    .addUrl("http://rexian.beijing.gov.cn/default/com.web.index.moreNewLetterQuery.flow?type=firstPage")  
                    .addPipeline(new FilePipeline("/data/edu1"))  
                    .setScheduler(new FileCacheQueueScheduler("/data/edu1"))  
                    .thread(5)  
                    .run();  
        }  
    }  

  • 相关阅读:
    关于excel导入、导出(POI)
    关于上传图片和显示
    关于sql连接查询(内联、左联、右联、全联)
    关于面试问题
    关于excel导出
    响应式布局和自适应布局的不同
    关于时间范围查询
    HDU 6166 Senior Pan(二进制分组+最短路)
    HUAS 2017暑假第六周比赛-题解
    AtCoder Regular Contest 081
  • 原文地址:https://www.cnblogs.com/sonofdemon/p/12250106.html
Copyright © 2020-2023  润新知