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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM