zoukankan      html  css  js  c++  java
  • 2月10日学习记录

    1,背诵单词:assault 猛烈地攻击,袭击  principal最重要的,主要的  consumption 消费(量),消耗   sniff .嗅…味道;抽鼻涕   extensive广大的,广阔的   tolerance 宽容   denote 表示,意味着   fierce 凶猛的,残忍的   idiot白痴;笨蛋   regarding关于,有关   surge汹涌;彭湃  railroad 铁路   coordinate 同等的,并列的  renovate 更新,修复   efficiency效率;功效   gown长袍   cotton棉花;棉线   minor较小的,较小的   magistrate地方行政官   whale n.鲸;庞然大物

    2,做爬取北京信件网页内容并学习Java爬虫webMagic框架观看视频:https://www.bilibili.com/video/av48765648? 23到33集

      1,添加webMagic依赖

      2,添加资源文件log4j.properties

      3,WebMagic的结构分为DownloaderPageProcessorSchedulerPipeline四大组件,

        1.Downloader

        Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。

        2.PageProcessor

        PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup

      在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。

        3.Scheduler

        Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管  理。除非项目有一些特殊的分布式需求,否则无需自己定制Scheduler。

        4.Pipeline

        Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供了“输出到控制台”和“保存到文件”两种结果处理方案。Pipeline定义了结  果保存的方式,如果你要保存到指定数据库,则需要编写对应的Pipeline。对于一类需求一般只需编写一个Pipeline

      4,常用对象: 

        1. Request

        Request是对URL地址的一层封装,一个Request对应一个URL地址。它是PageProcessor与Downloader交互的载体,也是PageProcessor控制Downloader唯一方  式。除了URL本身外,它还包含一个Key-Value结构的字段extra。你可以在extra中保存一些特殊的属性,然后在其他地方读取,以完成不同的功能。例如附加上一个页  面的一些信息等。

        2. Page

        Page代表了从Downloader下载到的一个页面——可能是HTML,也可能是JSON或者其他文本格式的内容。Page是WebMagic抽取过程的核心对象,它提供一些方法  可供抽取、结果保存等。在第四章的例子中,我们会详细介绍它的使用。

        3. ResultItems

        ResultItems相当于一个Map,它保存PageProcessor处理的结果,供Pipeline使用。它的API与Map很类似,值得注意的是它有一个字段skip,若设置为true,则不  应被Pipeline处理。

      5,抽取元素:

        

         xpath方法:

    //查找所有的"B"
    
    var xpath="//B";
    
    //查找所有元素
    
    xpath = “//*”;
    
    // 选择所有路径依附于/A/B/的元素
    
    xpath ="/A/B/*";
    
    //选择所有的有3个祖先元素的B元素
    
    xpath ="///*/B" ;
    
    // 选择所有父元素是DDD的BBB元素
    
    xpath="//C/D";
    
    // 选择A/B/C的第一个E子元素
    
    xpath="/A/B/C/E[1]";
    
    //选择A/B/C的最后一个E子元素
    
    xpath="/A/B/C/E[last()]" ;
    
    //选择有name属性的B元素
    
    xpath = “//B[@name]” ;
    
    //选择所有的name属性
    
    xpath="//@name";
    
    //选择有任意属性的B元素
    
    xpath="//B[@*]";
    
    //选择没有属性的B元素
    
    xpath="//B[not(@*)]";
    
    //选择含有属性id且其值为’e2’的E元素
    
    xpath="//E[@id=‘e2’]";
    
    //选择含有属性name且其值(在用normalize-space函数去掉前后空格后)为’b’的B元素
    
    xpath="//B[normalize-space(@name)=‘b’]";
    
    //选择含有2个B子元素的元素
    
    xpath="//*[count(B)=2]";
    
    //选择含有3个子元素的元素
    
    xpath="//[count()=3]";
    
    //选择所有名称为B的元素(这里等价于//B)
    
    xpath="//*[name()=‘B’]";
    
    //选择所有名称以"W"起始的元素
    
    xpath="//*[starts-with(name(),‘W’)]";
    
    //选择所有名称包含"W"的元素
    
    xpath="//*[contains(name(),‘W’)]";
    
    //选择名字长度为2(大于、小于)的元素;
    
    xpath="//*[string-length(name()) = 2]";
    
    xpath="//*[string-length(name()) < 2]";
    
    xpath="//*[string-length(name()) > 1]";
    
    //多个路径可以用分隔符 | 合并在一起,可以合并的路径数目没有限制,选择所有的WF和C元素
    
    xpath="//WF | //C";
    
    //等价于/A
    
    xpath="/child::A";
    
    //等价于//C/D
    
    xpath="//child::C/child:: D";
        

    3,遇到的问题:对Java集合的操作不熟练

    4,明天计划:继续将爬取的数据进行分析并学习hive的使用

  • 相关阅读:
    如何将asp.net MVC2项目升级为MVC3项目(微软官方自动升级工具:ASP.NET MVC 3 Application Upgrader )
    扩展Html Helper类,ASP.NET MVC框架提供了一个帮助我们构造Html元素的类:TagBuilder
    详解ASP.NET MVC2项目升级到MVC 3 RC
    NHibernate学习
    ASP.MVCNOTE
    MVC问题反馈页面代码
    Silverlightnote
    jqGrid
    必须掌握的八个DOS命令
    分页且带条件的存储过程
  • 原文地址:https://www.cnblogs.com/lq13035130506/p/12293398.html
Copyright © 2011-2022 走看看