关于使用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();一下就可以了。

posted @ 2020-01-19 10:45  masuo  阅读(1510)  评论(0编辑  收藏  举报