国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
Java發(fā)送Http請(qǐng)求,解析html返回
今天是2008年7月7日星期一,下午一直在學(xué)校做個(gè)人開(kāi)始頁(yè)面。因?yàn)殡x不開(kāi)google的翻譯,所以想把google的翻譯整合到我的開(kāi)始頁(yè)面中來(lái),于是乎就遇到了一個(gè)問(wèn)題,怎樣使用java程序發(fā)送http請(qǐng)求然后截獲遠(yuǎn)程服務(wù)器返回的數(shù)據(jù)進(jìn)行適當(dāng)處理之后再輸出?另外,google的翻譯頁(yè)面是使用post的方法提交數(shù)據(jù)的,無(wú)法直接通過(guò)網(wǎng)址進(jìn)行處理,于是乎,這又涉及到了一個(gè)怎樣使用java去post數(shù)據(jù)的問(wèn)題。
經(jīng)過(guò)拜讀百度知道的提問(wèn)(花了我20分),找到了一個(gè)htmlparser的jar包組件,據(jù)說(shuō)是可以很高效率的進(jìn)行html的解析。于是乎,立馬下載了一個(gè)過(guò)來(lái)。(文后附件中有)試了一下果然不錯(cuò)。同時(shí),在這個(gè)過(guò)程中也學(xué)會(huì)了怎樣利用java來(lái)和其它網(wǎng)站交互,這可是一個(gè)非常不錯(cuò)的功能,配合htmlparser,可以隨心所欲的截取別人網(wǎng)站的信息了!
廢話不多說(shuō)了,下面是具體的使用步驟。

首先,向一個(gè)Web站點(diǎn)發(fā)送POST請(qǐng)求只需要簡(jiǎn)單的幾步:
注意,這里不需要導(dǎo)入任何第三方包

Java代碼
  1. package com.test;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.IOException;   
  5. import java.io.InputStream;   
  6. import java.io.InputStreamReader;   
  7. import java.io.OutputStreamWriter;   
  8. import java.net.URL;   
  9. import java.net.URLConnection;   
  10.   
  11. public class TestPost {   
  12.   
  13.     public static void testPost() throws IOException {   
  14.   
  15.         /**  
  16.          * 首先要和URL下的URLConnection對(duì)話。 URLConnection可以很容易的從URL得到。比如: // Using  
  17.          *  java.net.URL and //java.net.URLConnection  
  18.          */  
  19.         URL url = new URL("http://www.faircanton.com/message/check.asp");   
  20.         URLConnection connection = url.openConnection();   
  21.         /**  
  22.          * 然后把連接設(shè)為輸出模式。URLConnection通常作為輸入來(lái)使用,比如下載一個(gè)Web頁(yè)。  
  23.          * 通過(guò)把URLConnection設(shè)為輸出,你可以把數(shù)據(jù)向你個(gè)Web頁(yè)傳送。下面是如何做:  
  24.          */  
  25.         connection.setDoOutput(true);   
  26.         /**  
  27.          * 最后,為了得到OutputStream,簡(jiǎn)單起見(jiàn),把它約束在Writer并且放入POST信息中,例如: ...  
  28.          */  
  29.         OutputStreamWriter out = new OutputStreamWriter(connection   
  30.                 .getOutputStream(), "8859_1");   
  31.         out.write("username=kevin&password=*********"); //post的關(guān)鍵所在!   
  32.         // remember to clean up   
  33.         out.flush();   
  34.         out.close();   
  35.         /**  
  36.          * 這樣就可以發(fā)送一個(gè)看起來(lái)象這樣的POST:   
  37.          * POST /jobsearch/jobsearch.cgi HTTP 1.0 ACCEPT:  
  38.          * text/plain Content-type: application/x-www-form-urlencoded  
  39.          * Content-length: 99 username=bob password=someword  
  40.          */  
  41.         // 一旦發(fā)送成功,用以下方法就可以得到服務(wù)器的回應(yīng):   
  42.         String sCurrentLine;   
  43.         String sTotalString;   
  44.         sCurrentLine = "";   
  45.         sTotalString = "";   
  46.         InputStream l_urlStream;   
  47.         l_urlStream = connection.getInputStream();   
  48.         // 傳說(shuō)中的三層包裝阿!   
  49.         BufferedReader l_reader = new BufferedReader(new InputStreamReader(   
  50.                 l_urlStream));   
  51.         while ((sCurrentLine = l_reader.readLine()) != null) {   
  52.             sTotalString += sCurrentLine + "\r\n";   
  53.   
  54.         }   
  55.         System.out.println(sTotalString);   
  56.     }   
  57.   
  58.     public static void main(String[] args) throws IOException {   
  59.   
  60.         testPost();   
  61.   
  62.     }   
  63.   
  64. }  


執(zhí)行的結(jié)果:(果真是返回了驗(yàn)證后的html阿!神奇!)
Html代碼
  1. <html>  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
  4. <title>賬戶已經(jīng)凍結(jié)</title>  
  5. <style type="text/css">  
  6. <!--   
  7. .temp {   
  8.     font-family: Arial, Helvetica, sans-serif;   
  9.     font-size: 14px;   
  10.     font-weight: bold;   
  11.     color: #666666;   
  12.     margin: 10px;   
  13.     padding: 10px;   
  14.     border: 1px solid #999999;   
  15. }   
  16. .STYLE1 {color: #FF0000}   
  17. -->  
  18. </style>  
  19. </head>  
  20.   
  21. <body>  
  22. <p> </p>  
  23. <p> </p>  
  24. <p> </p>  
  25. <table width="700" border="0" align="center" cellpadding="0" cellspacing="0" class="temp">  
  26.   <tr>  
  27.     <td width="135" height="192"><div align="center"><img src="images/err.jpg" width="54" height="58"></div></td>  
  28.     <td width="563"><p><span class="STYLE1">登錄失敗</span><br>  
  29.         <br>  
  30.     您的帳戶活躍指數(shù)低于系統(tǒng)限制,您的帳戶已經(jīng)被暫時(shí)凍結(jié)。<br>  
  31.     請(qǐng)您聯(lián)系網(wǎng)絡(luò)主管或者人事主管重新激活您的帳戶。</p>  
  32.     </td>  
  33.   </tr>  
  34. </table>  
  35. <p> </p>  
  36. </body>  
  37. </html>  




一些Web站點(diǎn)用POST形式而不是GET,這是因?yàn)镻OST能夠攜帶更多的數(shù)據(jù),而且不用URL,這使得它看起來(lái)不那么龐大。使用上面列出的大致的代碼,Java代碼可以和這些站點(diǎn)輕松的實(shí)現(xiàn)對(duì)話。


得到html以后,分析內(nèi)容就顯得相對(duì)輕松了?,F(xiàn)在就可以使用htmlparser了,下面是一個(gè)簡(jiǎn)單的示例程序,過(guò)多的解釋我就不說(shuō)了,相信代碼能夠說(shuō)明一切的!



Java代碼
  1. package com.test;   
  2.   
  3. import org.htmlparser.Node;   
  4. import org.htmlparser.NodeFilter;   
  5. import org.htmlparser.Parser;   
  6. import org.htmlparser.filters.TagNameFilter;   
  7. import org.htmlparser.tags.TableTag;   
  8. import org.htmlparser.util.NodeList;   
  9.   
  10. /**  
  11. * 標(biāo)題:利用htmlparser提取網(wǎng)頁(yè)純文本的例子  
  12. */  
  13. public class TestHTMLParser {   
  14.   public static void testHtml() {   
  15.     try {   
  16.         String sCurrentLine;   
  17.         String sTotalString;   
  18.         sCurrentLine = "";   
  19.         sTotalString = "";   
  20.         java.io.InputStream l_urlStream;   
  21.         java.net.URL l_url = new java.net.URL("http://www.ideagrace.com/html/doc/2006/07/04/00929.html");   
  22.         java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url.openConnection();   
  23.         l_connection.connect();   
  24.         l_urlStream = l_connection.getInputStream();   
  25.         java.io.BufferedReader l_reader = new java.io.BufferedReader(new java.io.InputStreamReader(l_urlStream));   
  26.         while ((sCurrentLine = l_reader.readLine()) != null) {   
  27.           sTotalString += sCurrentLine+"\r\n";   
  28.         //  System.out.println(sTotalString);   
  29.         }   
  30.         String testText = extractText(sTotalString);   
  31.         System.out.println( testText );   
  32.   
  33.     } catch (Exception e) {   
  34.         e.printStackTrace();   
  35.     }   
  36.   
  37.   }   
  38.     
  39.   public static String extractText(String inputHtml) throws Exception {   
  40.     StringBuffer text = new StringBuffer();   
  41.     Parser parser = Parser.createParser(new String(inputHtml.getBytes(),"GBK"), "GBK");   
  42.     // 遍歷所有的節(jié)點(diǎn)   
  43.     NodeList nodes = parser.extractAllNodesThatMatch(new NodeFilter() {   
  44.         public boolean accept(Node node) {   
  45.           return true;   
  46.         }   
  47.     });   
  48.   
  49.     System.out.println(nodes.size()); //打印節(jié)點(diǎn)的數(shù)量   
  50.     for (int i=0;i<nodes.size();i++){   
  51.          Node nodet = nodes.elementAt(i);   
  52.          //System.out.println(nodet.getText());    
  53.         text.append(new String(nodet.toPlainTextString().getBytes("GBK"))+"\r\n");             
  54.     }   
  55.     return text.toString();   
  56.   }   
  57.     
  58.   public static void test5(String resource) throws Exception {   
  59.     Parser myParser = new Parser(resource);   
  60.     myParser.setEncoding("GBK");   
  61.     String filterStr = "table";   
  62.     NodeFilter filter = new TagNameFilter(filterStr);   
  63.     NodeList nodeList = myParser.extractAllNodesThatMatch(filter);   
  64.     TableTag tabletag = (TableTag) nodeList.elementAt(11);   
  65.         
  66.   }   
  67.   
  68.   public static void main(String[] args) throws Exception {   
  69.     // test5("http://www.ggdig.com");   
  70.     testHtml();   
  71.   }   
  72. }  
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JSP抓取網(wǎng)頁(yè)代碼的程序
HTMLParser使用詳解(1)- 初始化Parser
Java 項(xiàng)目生成靜態(tài)頁(yè)面的代碼
java 發(fā)送post請(qǐng)求
JAVA 網(wǎng)絡(luò)程序
Android
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服