• 关于使用webmagic如何得到标签内部的内容的小例子


    今天在获取一个网页的具体内容时遇到了一些小麻烦,

    源代码:

     1 package com.ms.test;
     2 
     3 import us.codecraft.webmagic.Page;
     4 import us.codecraft.webmagic.Site;
     5 import us.codecraft.webmagic.Spider;
     6 import us.codecraft.webmagic.processor.PageProcessor;
     7 
     8 public class TestWebmagic implements PageProcessor{
     9 
    10     Site site = Site.me();
    11     @Override
    12     public Site getSite() {
    13         // TODO Auto-generated method stub
    14         return site;
    15     }
    16 
    17     @Override
    18     public void process(Page page) {
    19         // TODO Auto-generated method stub
    20         page.putField("test", page.getHtml().xpath("//div[@class=p-2]/div[@class=o-border-bottom2]/div[@class=my-2]/strong"));
    21     }
    22 
    23     public static void main(String[] args) {
    24         Spider.create(new TestWebmagic())
    25         .addUrl("http://www.beijing.gov.cn/hudong/hdjl/com.web.consult.consultDetail.flow?originalId=AH20011700001")
    26         .run();
    27     }
    28 }
    View Code

    我获取到的结果是这个样子的:

     但是我想要的一定是不带标签的内容,所以呢我就去百度了一下,发现没有很好的例子,但是在一个评论中找到了答案,那就是在后面加一个“/text()”函数。

    我们 都知道在jsoup中,很容易就能得到标签内的内容,因为他有“text()”这个函数,所以我看到例子的时候我就知道了。

    更新后的代码:

     1 package com.ms.test;
     2 
     3 import us.codecraft.webmagic.Page;
     4 import us.codecraft.webmagic.Site;
     5 import us.codecraft.webmagic.Spider;
     6 import us.codecraft.webmagic.processor.PageProcessor;
     7 
     8 public class TestWebmagic implements PageProcessor{
     9 
    10     Site site = Site.me();
    11     @Override
    12     public Site getSite() {
    13         // TODO Auto-generated method stub
    14         return site;
    15     }
    16 
    17     @Override
    18     public void process(Page page) {
    19         // TODO Auto-generated method stub
    20         page.putField("test", page.getHtml().xpath("//div[@class=p-2]/div[@class=o-border-bottom2]/div[@class=my-2]/strong/text()"));
    21         
    22     }
    23 
    24     public static void main(String[] args) {
    25         Spider.create(new TestWebmagic())
    26         .addUrl("http://www.beijing.gov.cn/hudong/hdjl/com.web.consult.consultDetail.flow?originalId=AH20011700001")
    27         .run();
    28     }
    29 }
    View Code

    结果如下:

     想起来我以前也遇到过一个类似的问题,就是这样的,未更改前,得到的结果是这样的:

    更改后得到的结果是这样的:

     什么都没有输出,这个。。。

    还是用我自己的办法吧。

    /***********************************************续***********************************************/

    2020-02-15    21:34:43

    关于获取标签内部内容的补充,在上述方法中,加一个“/text()”确实可以输出标签内部的内容,但是如果想把结果赋值给String并且也是不带标签的话,toString();一下就可以了。

  • 相关阅读:
    党报
    一个人只有敢于承担责任,才有可能被赋予更大的责任。做不
    勇于担当:好男人的三块责任田——
    关于担当
    领导干部要勇于担当
    福布斯专访阿里蔡崇信:马云的坚持和改变
    阿里股权
    ContentProvider
    搞笑段子
    报业
  • 原文地址:https://www.cnblogs.com/msdog/p/12212731.html
Copyright © 2020-2023  润新知