zoukankan      html  css  js  c++  java
  • 大三上寒假15天--第13天

    经过今天的摸索,终于完成了首都之窗信件的爬取代码,昨天的代码共有两处错误导致无法达到爬取目的。

    1. page.addTargetRequests(page.getHtml().link().regex().all());应该为:page.addTargetRequests(page.getHtml().regex("http://www.beijing.gov.cn/hudong/hdjl/com.web.\S+.\S+.flow\?originalId=[^"]+").all());具体原因不知我猜测可能是因为一个在a标签中的href是link而另一个在js的location.href中不为link在网上也没有查到解释的,后面我会继续去寻找,找到这个错误是真的很不容易啊,真的是一点点试出来的。
    2. 正则表达式"http://www.beijing.gov.cn/hudong/hdjl/com.web.\S+.\S+.flow\?originalId=\S+[^"]"应该为:"http://www.beijing.gov.cn/hudong/hdjl/com.web.\S+.\S+.flow\?originalId=[^"]+"前一个我发现爬取后网址后面跟有“;然后上不去网址所以爬取不到,后一个才是正确表达。

    以下为全部代码:

    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<=50;i++){
                urlstr="http://www.beijing.gov.cn/so/s?qt=%E4%BF%A1%E4%BB%B6&tab=all&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());
        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=all&siteCode=1100000088&page=1")
            .addPipeline(new FilePipeline("./"))
            .setScheduler(new FileCacheQueueScheduler("./"))
            .thread(5)
            .run();
            System.out.println("完成");
      }
    }

    到此爬取首都之窗信件任务完成,相信明天可以很快完成新型管状病毒信息收集,然后再完成信息处理,

  • 相关阅读:
    Linux的常用目录学习笔记
    htm,html,xhtml,xml,xsl,dhtml,shtm和shtml的区分
    js中迭代元素特性与DOM中的DocumentFragment类型 笔记
    查找算法--线性结构的查找方法
    有关rand(),srand()产生随机数学习总结
    nodejs版本管理工具nvm使用说明
    解决微信端公众号网页获取短信验证码ajax重复调用两次的问题
    判断安卓苹果ipad,iphone,微信
    css的对号错号,也就是勾和叉
    flex的一些方法注释或者叫flex笔记
  • 原文地址:https://www.cnblogs.com/my---world/p/12306031.html
Copyright © 2011-2022 走看看