zoukankan      html  css  js  c++  java
  • 关于使用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();一下就可以了。

  • 相关阅读:
    格式化数据和DataBinder.Eval用法范例【转】
    动态GridView +DataTable
    Container.DataItem
    SQL自定义字段排序
    VS 2008 Web Deployment Project
    清除SQLServer日志
    SQL常用功能
    在Web应用程序中执行计划任务(多线程)
    得到临时表的列数
    用rdlc文件直接导出到excel或PDF
  • 原文地址:https://www.cnblogs.com/msdog/p/12212731.html
Copyright © 2011-2022 走看看