• 2020寒假生活学习日记(十四)


    爬取北京市信件内容:

    下载webmagic-0.7-libs.tar.gz压缩包,解压缩。没有压缩包可以加QQ:893225523

    通过Filezilla上传到/home/hadoop/下载

    sudo tar -zxf ~/下载/webmagic-0.7.3-all.tar.gz -C /data/edu1/
    

    新建Java Project,命名为

    点击项目名pachong1,新建一个目录,命名为libs,并将/data/edu1/webmagic-0.7-libs下的所有的jar包,拷贝到libs目录下。并选中所有jar包,右键点击“Build Path” => “Add to Build Path”

    pachong1项目下,点击src => New => Package新建一个包,在弹出窗口中,输入包名my.webmagic

    my.webmagic包下,新建class

    将新建的类,命名为Getgov,搭建完的代码框架如下:

     

    代码编写

    WebMagic里,实现一个基本的爬虫只需要编写一个类,实现 us.codecraft.webmagic.processor.PageProcessor接口即可。这个类基本上包含了抓取一个网站,需要写的所有代码。实现接口后,重写里面的getSiteprocess方法

    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().setRetrySleepTime(3).setSleepTime(100);
    	/**
    	 * @param args
    	 */
    	public Site getSite() {
    		// TODO Auto-generated method stub
    		return site;
    	}
    
    	public void process(Page page) {
    		// TODO Auto-generated method stub
    		page.putField("allhtml",page.getHtml().toString());
    		String urlstr=null;
    	for(int i=2;i<=25;i++){
    			urlstr="http://www.beijing.gov.cn/so/s?qt=%E4%BF%A1%E4%BB%B6&tab=zmhd&siteCode=1100000088&page="+i;
    			page.addTargetRequest(urlstr);
    	}
    	page.addTargetRequests(page.getHtml().links().regex("view\S+8").all());
    	page.addTargetRequests(page.getHtml().regex("http://www.beijing.gov.cn/hudong/hdjl/com.web.\S+.\S+.flow\?originalId=[^"]+").all());
    	page.addTargetRequests(page.getHtml().regex("http://hudong.bjhr.gov.cn/zixun/[^"]+").all());
    	page.addTargetRequests(page.getHtml().regex("http://www.beijing.gov.cn/hudong/yonghu/static/[^"]+").all());
    	page.addTargetRequests(page.getHtml().regex("http://ylba.wjw.beijing.gov.cn/ggws/[^"]+").all());
    	System.out.println(page.getHtml().regex("http://www.beijing.gov.cn/hudong/hdjl/com.web.\S+.\S+.flow\?originalId=[^"]+").all());
    		}
    	public static void main(String[] args) {
    		Spider.create(new Getgov())
    		.addUrl("http://www.beijing.gov.cn/so/s?qt=%E4%BF%A1%E4%BB%B6&tab=zmhd&siteCode=1100000088&page=1")
    		.addPipeline(new FilePipeline("./"))
    		.setScheduler(new FileCacheQueueScheduler("./"))
    		.thread(5)
    		.run();
    		System.out.println("完成");
      }
    }
    
  • 相关阅读:
    WebService中Dataset的压缩序列化和解压反序列化(DataSetSurrogate的使用)
    IOleControl 代码一,测试有问题,备忘
    关于Stream和byte之间的转换 .
    webbrowser 实现IOleControl接口2
    JavaScropt获取网页、浏览器、屏幕高度和宽度
    Oracle默认的用户名和密码
    window.showModalDialog()用法及注意事项
    Android1.6开发环境配置
    string与stream互相转换
    GirdView实现单选、FooterTemplate实现新建和PagerTemplate实现分页
  • 原文地址:https://www.cnblogs.com/jccjcc/p/12308185.html
Copyright © 2020-2023  润新知