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

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 }
我获取到的结果是这个样子的:
但是我想要的一定是不带标签的内容,所以呢我就去百度了一下,发现没有很好的例子,但是在一个评论中找到了答案,那就是在后面加一个“/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 }
结果如下:
想起来我以前也遇到过一个类似的问题,就是这样的,未更改前,得到的结果是这样的:
更改后得到的结果是这样的:
什么都没有输出,这个。。。
还是用我自己的办法吧。
/***********************************************续***********************************************/
2020-02-15 21:34:43
关于获取标签内部内容的补充,在上述方法中,加一个“/text()”确实可以输出标签内部的内容,但是如果想把结果赋值给String并且也是不带标签的话,toString();一下就可以了。