綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 強大html解析裝置jsoup

[複製連結] 查看: 2006|回覆: 5|好評: 0
跳轉到指定樓層
樓主
hl2dm | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2012-12-10 09:33

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
我最近開始研究如何使用jsoup
我已經成功get方法取得html字串

針對這個字串的處理我在網路上有找到範例選擇:
Elements pngs = doc.select ("div.kk2");

利用這個字串我成功取得放圖片的div:
<div class="kk2" id="12" style="border:2px solid #FFFF00; top:-1px;
left:-203px; height:151px; width:200px">

<img src = "http:// kk.org / t / ea / ff.jpg "alt =" text "style =" fff "/>

</ div>

透過範例的篩選:
for(Element png : pngs){
              sff2.append(png.attr("abs:href")).append("
").append(png.text()).append("\n");
          }

卻取得怪怪的字串
init ~ kk.org ~ t / ea / ff.jpg ~ text
intt跟~都可以用replaceAll替換

問題是alt的值...不能單純用替換的方式

我單純只想要取得http://kk.org/t/ea/ff.jpg 該怎麼做呢?
有方法能直接從div中去除值alt?還是一開始選擇就能選擇只有img呢?

這工具真的很神奇,但我還是不太清楚該怎麼用
希望版友能給一些幫助謝謝
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
ploglin | 收聽TA | 只看該作者
發表於 2012-12-10 09:36
可以說一下你的目地是要什麼?
是重組 HTML 還是單純的要某一個 TAG 的屬性?內容?其它?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| hl2dm | 收聽TA | 只看該作者
發表於 2012-12-10 09:49
本帖最後由 hl2dm 於 2012-12-10 09:51 編輯

他是一個貼圖網站
我想要擷取他每一張圖片的連結
有了連結之後就能夠整理
製成下載APP或是瀏覽APP之類的

我只要img的值其他都不需要
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
ploglin | 收聽TA | 只看該作者
發表於 2012-12-10 09:52
http://jsoup.org/cookbook/extracting-data/dom-navigation

上面有說明怎麼取得 TAG 的 Attribute

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
hl2dm + 1 + 1 非常讚

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
 樓主| hl2dm | 收聽TA | 只看該作者
發表於 2012-12-10 11:47
本帖最後由 hl2dm 於 2012-12-10 12:01 編輯

剛剛以奇摩搜尋測試了一下
  1. private void now() {
  2.                 String webserviceurl  = "http://tw.search.yahoo.com/search/images;_ylt=A8tUwJjRU8VQD3gAiBFs1gt.";
  3.                 InputStream is;

  4.                 List<NameValuePair> lstAddToken         = new ArrayList<NameValuePair>();
  5.                 lstAddToken.add(new BasicNameValuePair("fr","sfp"));
  6.                 lstAddToken.add(new BasicNameValuePair("p","java"));
  7.                 lstAddToken.add(new BasicNameValuePair("iscqry",""));
  8.                 lstAddToken.add(new BasicNameValuePair("ei","utf-8"));

  9.                 //add parameters to the URL
  10.                 webserviceurl                           += "?";
  11.                 String paramString                      = URLEncodedUtils.format(lstAddToken, "utf-8");
  12.                 webserviceurl                           += paramString;

  13.                 //Call the webservice using HttpGet with parameters and get the response from webservice
  14.                 try
  15.                 {
  16.                     DefaultHttpClient demo = new DefaultHttpClient();
  17. demo.getParams().setParameter("http.protocol.content-charset", "UTF-8");

  18. // Get Request Example,取得 google 查詢 httpclient 的結果
  19. HttpGet httpGet = new HttpGet(webserviceurl);
  20. HttpResponse response2 = demo.execute(httpGet);
  21. String responseString = EntityUtils.toString(response2.getEntity());
  22. Document doc = Jsoup.parse(responseString);
  23. Elements pngs = doc.select("img[src]");
  24. if (response2.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
  25. // 如果回傳是 200 OK 的話才輸出
  26. System.out.println(responseString);
  27. System.out.println(pngs);

  28. } else {
  29. System.out.println(response2.getStatusLine());
  30. }

  31.                 }
  32.                 catch (Throwable t)
  33.                 {
  34.                      Log.e("log_tag", "Error converting result "+t.toString());
  35.                 }
  36.                
  37.         }
複製代碼
得到回傳
  1. <img width="1" height="1" alt="" src="http://row.bc.yahoo.com/b?P=mz_sXctUwKeTXvBXEmE7Qw_tdw5QhFDFWjYADuBj&amp;T=1847ko0p4%2fX%3d1355110967%2fE%3d2114705005%2fR%3dtwsrcgspi%2fK%3d5%2fV%3d2.1%2fW%3dHR%2fY%3dKIMO%2fF%3d3387896648%2fH%3dc2VydmVJZD0ibXpfc1hjdFV3S2VUWHZCWEVtRTdRd190ZHc1UWhGREZXallBRHVCaiIgc2l0ZUlkPSIyNDI1NjEiIHRTdG1wPSIxMzU1MTEwOTY3ODU1NjA5IiA-%2fQ%3d-1%2fS%3d1%2fJ%3d99C054CB&amp;U=12bep1lpl%2fN%3dWD4uMsorwsw-%2fC%3d-1%2fD%3dNT1%2fB%3d-1%2fV%3d0" />
  2. <img src="http://ts3.mm.bing.net/th?id=H.4747137966868250&amp;pid=15.1" width="145" alt="" height="145" />
  3. <img src="http://ts4.mm.bing.net/th?id=H.4573702904743551&amp;pid=15.1" width="194" alt="" height="145" style="margin-left:-25px;" />
  4. <img src="http://ts1.mm.bing.net/th?id=H.4937430769337608&amp;pid=15.1" width="182" alt="" height="145" style="margin-left:-19px;" />
  5. <img src="http://ts3.mm.bing.net/th?id=I.4872666953155418&amp;pid=15.1" width="218" alt="" height="145" style="margin-left:-35px;" />
  6. <img src="http://ts4.mm.bing.net/th?id=I.4819765862138207&amp;pid=15.1" width="191" alt="" height="145" style="margin-left:-23px;" />
  7. <img src="http://ts2.mm.bing.net/th?id=H.4619341236602193&amp;pid=15.1" width="182" alt="" height="145" style="margin-left:-36px;" />
  8. <img src="http://ts1.mm.bing.net/th?id=H.4854653888105216&amp;pid=15.1" width="195" alt="" height="145" style="margin-left:-25px;" />
  9. <img src="http://ts4.mm.bing.net/th?id=H.4709827606611127&amp;pid=15.1" width="294" alt="" height="145" style="margin-left:-149px;" />
  10. <img src="http://ts1.mm.bing.net/th?id=H.4773680868623148&amp;pid=15.1" width="145" alt="" height="145" />
  11. <img src="http://ts3.mm.bing.net/th?id=I.4665129879470998&amp;pid=15.1" width="145" alt="" height="145" />
複製代碼
不過還是除了圖片連結外又多了一堆orz alt height width 要怎麼弄掉還是不會LOL


於是我又測試了
  1. Elements pngs = doc.select("img[src]").removeAttr("style").removeAttr("width").removeAttr("alt").removeAttr("height").removeAttr("pid");
複製代碼
成功達到我的目的了...
奇怪我之前在家裡面測試就不行@"@
原來removeAttr這個功能有用!!
回家再測試
因為該網站不適合在公司開XXD
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
ploglin | 收聽TA | 只看該作者
發表於 2012-12-10 13:37
你的作法還是不太正確,它的 Cookbook 寫的很清楚唷!

  1. Elements img = content.getElementsByTag("img");
  2. for (Element link : img) {
  3.   String linkSrc = link.attr("src"); // 這個就只會取得 src 這個屬性
  4. }
複製代碼
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則