Android 台灣中文網
標題:
強大html解析裝置jsoup
[打印本頁]
作者:
hl2dm
時間:
2012-12-10 09:33
標題:
強大html解析裝置jsoup
我最近開始研究如何使用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呢?
這工具真的很神奇,但我還是不太清楚該怎麼用
希望版友能給一些幫助謝謝
作者:
ploglin
時間:
2012-12-10 09:36
可以說一下你的目地是要什麼?
是重組 HTML 還是單純的要某一個 TAG 的屬性?內容?其它?
作者:
hl2dm
時間:
2012-12-10 09:49
本帖最後由 hl2dm 於 2012-12-10 09:51 編輯
他是一個貼圖網站
我想要擷取他每一張圖片的連結
有了連結之後就能夠整理
製成下載APP或是瀏覽APP之類的
我只要img的值其他都不需要
作者:
ploglin
時間:
2012-12-10 09:52
http://jsoup.org/cookbook/extracting-data/dom-navigation
上面有說明怎麼取得 TAG 的 Attribute
作者:
hl2dm
時間:
2012-12-10 11:47
本帖最後由 hl2dm 於 2012-12-10 12:01 編輯
剛剛以奇摩搜尋測試了一下
private void now() {
String webserviceurl = "http://tw.search.yahoo.com/search/images;_ylt=A8tUwJjRU8VQD3gAiBFs1gt.";
InputStream is;
List<NameValuePair> lstAddToken = new ArrayList<NameValuePair>();
lstAddToken.add(new BasicNameValuePair("fr","sfp"));
lstAddToken.add(new BasicNameValuePair("p","java"));
lstAddToken.add(new BasicNameValuePair("iscqry",""));
lstAddToken.add(new BasicNameValuePair("ei","utf-8"));
//add parameters to the URL
webserviceurl += "?";
String paramString = URLEncodedUtils.format(lstAddToken, "utf-8");
webserviceurl += paramString;
//Call the webservice using HttpGet with parameters and get the response from webservice
try
{
DefaultHttpClient demo = new DefaultHttpClient();
demo.getParams().setParameter("http.protocol.content-charset", "UTF-8");
// Get Request Example,取得 google 查詢 httpclient 的結果
HttpGet httpGet = new HttpGet(webserviceurl);
HttpResponse response2 = demo.execute(httpGet);
String responseString = EntityUtils.toString(response2.getEntity());
Document doc = Jsoup.parse(responseString);
Elements pngs = doc.select("img[src]");
if (response2.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 如果回傳是 200 OK 的話才輸出
System.out.println(responseString);
System.out.println(pngs);
} else {
System.out.println(response2.getStatusLine());
}
}
catch (Throwable t)
{
Log.e("log_tag", "Error converting result "+t.toString());
}
}
複製代碼
得到回傳
<img width="1" height="1" alt="" src="http://row.bc.yahoo.com/b?P=mz_sXctUwKeTXvBXEmE7Qw_tdw5QhFDFWjYADuBj&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&U=12bep1lpl%2fN%3dWD4uMsorwsw-%2fC%3d-1%2fD%3dNT1%2fB%3d-1%2fV%3d0" />
<img src="http://ts3.mm.bing.net/th?id=H.4747137966868250&pid=15.1" width="145" alt="" height="145" />
<img src="http://ts4.mm.bing.net/th?id=H.4573702904743551&pid=15.1" width="194" alt="" height="145" style="margin-left:-25px;" />
<img src="http://ts1.mm.bing.net/th?id=H.4937430769337608&pid=15.1" width="182" alt="" height="145" style="margin-left:-19px;" />
<img src="http://ts3.mm.bing.net/th?id=I.4872666953155418&pid=15.1" width="218" alt="" height="145" style="margin-left:-35px;" />
<img src="http://ts4.mm.bing.net/th?id=I.4819765862138207&pid=15.1" width="191" alt="" height="145" style="margin-left:-23px;" />
<img src="http://ts2.mm.bing.net/th?id=H.4619341236602193&pid=15.1" width="182" alt="" height="145" style="margin-left:-36px;" />
<img src="http://ts1.mm.bing.net/th?id=H.4854653888105216&pid=15.1" width="195" alt="" height="145" style="margin-left:-25px;" />
<img src="http://ts4.mm.bing.net/th?id=H.4709827606611127&pid=15.1" width="294" alt="" height="145" style="margin-left:-149px;" />
<img src="http://ts1.mm.bing.net/th?id=H.4773680868623148&pid=15.1" width="145" alt="" height="145" />
<img src="http://ts3.mm.bing.net/th?id=I.4665129879470998&pid=15.1" width="145" alt="" height="145" />
複製代碼
不過還是除了圖片連結外又多了一堆orz alt height width 要怎麼弄掉還是不會LOL
於是我又測試了
Elements pngs = doc.select("img[src]").removeAttr("style").removeAttr("width").removeAttr("alt").removeAttr("height").removeAttr("pid");
複製代碼
成功達到我的目的了...
奇怪我之前在家裡面測試就不行@"@
原來removeAttr這個功能有用!!
回家再測試
因為該網站不適合在公司開XXD
作者:
ploglin
時間:
2012-12-10 13:37
你的作法還是不太正確,它的 Cookbook 寫的很清楚唷!
Elements img = content.getElementsByTag("img");
for (Element link : img) {
String linkSrc = link.attr("src"); // 這個就只會取得 src 這個屬性
}
複製代碼
歡迎光臨 Android 台灣中文網 (https://apk.tw/)
Powered by Discuz! X3.1