首页 > 其他 > 详细

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

时间:2020-02-01 21:09:16      阅读:60      评论:0      收藏:0      [点我收藏+]

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

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

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

控制节点,也叫作爬虫的中央控制器,主要负责根据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();  
    }  
}  

技术分享图片

 

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

原文:https://www.cnblogs.com/sonofdemon/p/12250106.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!