lexy

          支持開源,尊重他人的勞動!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            17 隨筆 :: 0 文章 :: 9 評論 :: 0 Trackbacks

          httpclient+nekohtml?解析HTML

          import org.cyberneko.html.parsers.DOMParser;
          import org.xml.sax.InputSource;
          import org.xml.sax.SAXException;
          import org.w3c.dom.Document;
          import org.apache.commons.httpclient.HttpClient;
          import org.apache.commons.httpclient.HttpException;
          import org.apache.commons.httpclient.HttpStatus;
          import org.apache.commons.httpclient.methods.GetMethod;

          import java.io.InputStream;
          import java.io.IOException;

          public class Html2XML {
          ??? private int connectionTimeout = 5000;
          ??? private int soTimeout = 12000;
          ??? private String proxyHost = null;
          ??? private int proxyPort;

          ??? public Document getDocument(String url) {
          ??????? HttpClient client = new HttpClient();
          ??????? if (proxyHost != null) {
          ??????????? client.getHostConfiguration().setProxy(proxyHost, proxyPort);
          ??????? }
          ??????? client.getHttpConnectionManager().getParams().setConnectionTimeout(connectionTimeout);
          ??????? client.getHttpConnectionManager().getParams().setSoTimeout(soTimeout);
          ??????? GetMethod method = new GetMethod(url);
          ??????? method.addRequestHeader("Content-Type", "text/html; charset=utf-8");
          ??????? try {
          ??????????? int statusCode = client.executeMethod(method);
          ??????????? if (statusCode != HttpStatus.SC_OK) {
          ??????????????? throw new HttpException("HttpStatusCode : " + statusCode);
          ??????????? }
          ??????????? InputStream is = method.getResponseBodyAsStream();
          ??????????? DOMParser parser = new DOMParser();
          ??????????? parser.setProperty("??????????? parser.parse(new InputSource(is));
          ??????????? return (parser.getDocument());
          ??????? } catch (HttpException he) {
          ??????????? he.printStackTrace();
          ??????? } catch (IOException ie) {
          ??????????? ie.printStackTrace();
          ??????? } catch (SAXException se) {
          ??????????? se.printStackTrace();
          ??????? }
          ??????? return null;
          ??? }
          }


          評論

          # re: httpclient+nekohtml 解析HTML 2008-04-01 09:25 隔葉黃鶯
          如果 html 頁面完全不規范就不好辦了,如
          <h1><div>kkkkk</h1></div>  回復  更多評論
            

          # re: httpclient+nekohtml 解析HTML 2008-04-01 17:13 lexy
          @隔葉黃鶯

          這個我也沒具體測試過,呵呵。
          不過 nekohtml 的介紹是這樣說的:
          這個解析器能投掃描HTML文件并“修正”許多作者(人或機器)在編寫HTML文檔過程中常犯的錯誤。NekoHTML能增補缺失的父元素、自動用結束標簽關閉相應的元素,以及不匹配的內嵌元素標簽。

          我在用的過程中暫時還沒發現什么大問題,呵呵。
            回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 明溪县| 庆城县| 平泉县| 张北县| 墨竹工卡县| 许昌市| 南城县| 绩溪县| 上饶市| 繁昌县| 溧水县| 五寨县| 榆中县| 灵璧县| 星座| 惠州市| 韶山市| 洪洞县| 高密市| 高台县| 台州市| 威宁| 定陶县| 织金县| 太保市| 嘉兴市| 营山县| 大城县| 长乐市| 登封市| 炎陵县| 钦州市| 临泽县| 米泉市| 丰台区| 吴堡县| 中宁县| 桐梓县| 金堂县| 光山县| 义乌市|