<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Chan Chen Coding...

    httpClient獲取Jsoup解析網(wǎng)頁(yè)

    因項(xiàng)目需要從某個(gè)網(wǎng)站爬取一點(diǎn)數(shù)據(jù),故我將爬取記錄如下,以后說(shuō)不定還能用得到呢,廢話少說(shuō),進(jìn)入正題:

    HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,可以用來(lái)提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議。本文首先介紹 HTTPClient,然后根據(jù)作者實(shí)際工作經(jīng)驗(yàn)給出了一些常見問(wèn)題的解決方法。

    HttpClient 主頁(yè):http://hc.apache.org/httpcomponents-client-dev/index.html

    jsoup是一個(gè)Java HTML Parser。能夠從URL、文件或字符串解析HTML。利用DOM遍歷或CSS選擇器查找和抽取數(shù)據(jù)。能夠操作HTML元素,屬性和文本。能夠依據(jù)一個(gè)白名單過(guò)濾用戶提交的內(nèi)容。

     

    jsoup主頁(yè):http://jsoup.org/

    具體的我就不解釋了 自己度娘、谷哥去

     

    要不找個(gè)例子先?!

     

    比如就拿www.iteye.com首頁(yè)來(lái)說(shuō)吧,我想定時(shí)抓取iteye首頁(yè)“精華文章”里面的數(shù)據(jù)

    思路,用代碼請(qǐng)求www.iteye.com首頁(yè),拿到首頁(yè)的html代碼,解析html代碼,獲取“精華文章”里面文章的連接地址在此請(qǐng)求該地址,拿下該文章,是吧?!ok,來(lái)看處理過(guò)程:

     

     先用瀏覽器打開www.iteye.com,可以用調(diào)試工具 firefox裝上firebug chrome右擊審核元素

    以firefox為例:


    可以發(fā)現(xiàn)“精華文章” 里面文章的全結(jié)構(gòu)是

    在id=“page”的div下面的 

       id=“content”的div下面的 

       id=“main”的div下面的

       class=“left”的div下面的

       id=“recommend”的div下面的

       ul下面的li下面的a標(biāo)簽

     

     

    首先用httpClient獲取首頁(yè)html代碼 我用的是httpClient4.1.2  jar包見附件 jsoup用的是jsoup-1.6.1.jar

     

    Java代碼  收藏代碼
    1. /** 
    2.      * 根據(jù)URL獲得所有的html信息 
    3.      * @param url 
    4.      * @return 
    5.      */  
    6.     public static String getHtmlByUrl(String url){  
    7.         String html = null;  
    8.         HttpClient httpClient = new DefaultHttpClient();//創(chuàng)建httpClient對(duì)象  
    9.         HttpGet httpget = new HttpGet(url);//以get方式請(qǐng)求該URL  
    10.         try {  
    11.             HttpResponse responce = httpClient.execute(httpget);//得到responce對(duì)象  
    12.             int resStatu = responce.getStatusLine().getStatusCode();//返回碼  
    13.             if (resStatu==HttpStatus.SC_OK) {//200正常  其他就不對(duì)  
    14.                 //獲得相應(yīng)實(shí)體  
    15.                 HttpEntity entity = responce.getEntity();  
    16.                 if (entity!=null) {  
    17.                     html = EntityUtils.toString(entity);//獲得html源代碼  
    18.                 }  
    19.             }  
    20.         } catch (Exception e) {  
    21.             System.out.println("訪問(wèn)【"+url+"】出現(xiàn)異常!");  
    22.             e.printStackTrace();  
    23.         } finally {  
    24.             httpClient.getConnectionManager().shutdown();  
    25.         }  
    26.         return html;  
    27.     }  

    上面是用httpClient獲取html源文件的代碼

    下面就是對(duì)該html頁(yè)面進(jìn)行解析 得到我們想要的連接

     下面是jsoup處理得到的html源碼

     

    Java代碼  收藏代碼
    1. import org.jsoup.Jsoup;  
    2. import org.jsoup.nodes.Document;  
    3. import org.jsoup.nodes.Element;  
    4. import org.jsoup.select.Elements;  
    5.   
    6. public class JustTest {  
    7.     public static void main(String[] args) {  
    8.         String html = getHtmlByUrl("http://www.iteye.com/");  
    9.         if (html!=null&&!"".equals(html)) {  
    10.             Document doc = Jsoup.parse(html);  
    11.             Elements linksElements = doc.select("div#page>div#content>div#main>div.left>div#recommend>ul>li>a");  
    12.             //以上代碼的意思是 找id為“page”的div里面   id為“content”的div里面   id為“main”的div里面   class為“left”的div里面   id為“recommend”的div里面ul里面li里面a標(biāo)簽  
    13.             for (Element ele:linksElements) {  
    14.                 String href = ele.attr("href");  
    15.                 String title = ele.text();  
    16.                 System.out.println(href+","+title);  
    17.             }  
    18.         }  
    19.     }  
    20. }  
     

     

    其實(shí)jsoup的語(yǔ)法很簡(jiǎn)單,就是跟jquery一樣用“#”取id,用“.”取樣式位之后的數(shù)據(jù) 

     

    其實(shí)都很簡(jiǎn)單的,當(dāng)然,越規(guī)范的網(wǎng)頁(yè)分析起來(lái)越容易,要是網(wǎng)頁(yè)不規(guī)范就只好大家多寫點(diǎn)代碼咯



    -----------------------------------------------------
    Silence, the way to avoid many problems;
    Smile, the way to solve many problems;

    posted on 2012-08-17 14:47 Chan Chen 閱讀(9285) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产精品亚洲一区二区三区在线 | 亚洲av网址在线观看| 久久综合日韩亚洲精品色| 亚洲国产视频网站| 亚洲丶国产丶欧美一区二区三区| 国产精品亚洲а∨天堂2021| 中文字幕无线码中文字幕免费| 免费国产午夜高清在线视频| 九九精品免费视频| 国产一级一片免费播放| 亚洲精品无码久久久久| 亚洲乱码中文论理电影| 黄色一级免费网站| 99re在线视频免费观看| 日韩免费a级在线观看| 亚洲综合伊人久久大杳蕉| 亚洲成人午夜电影| 男人j进女人p免费视频| 免费国产黄网站在线观看| 免费理论片51人人看电影| 国产亚洲AV夜间福利香蕉149| 亚洲日本在线播放| 免费无码婬片aaa直播表情| 免费人成在线观看网站品爱网| 国产精品久久免费视频| 亚洲AV无码一区二区乱子伦 | 亚洲国产精品嫩草影院| 91成人免费观看在线观看| 国产免费久久精品99re丫y| 亚洲午夜无码AV毛片久久| 亚洲成年人免费网站| www在线观看播放免费视频日本| 99国产精品永久免费视频| 亚洲午夜av影院| 亚洲国产最大av| 女人隐私秘视频黄www免费| 在线免费一区二区| 亚洲2022国产成人精品无码区| 久久精品亚洲日本波多野结衣| 无码精品人妻一区二区三区免费看| 在线观看国产情趣免费视频|