• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            jake1036

            larbin源碼分析(十) IpSite站點(diǎn)的抽象類

                          IpSite站點(diǎn)的抽象類

             一 該類的功能
                 NamedSite中的類經(jīng)過(guò)dns請(qǐng)求之后,就會(huì)將站點(diǎn)名轉(zhuǎn)換為ip,然后將url transfer到Ipsite中,由Ipsite具體完成爬蟲(chóng)工作。
             二 類的具體成員參數(shù)
                    time_t lastAccess; //該IP最后獲取的時(shí)間
                    bool isInFifo;         //當(dāng)該對(duì)象完成了一次fetch之后,將其加入到oksites中,并將其置為true,或者將一個(gè)url加入進(jìn)fifo中
                    url *getUrl ();       //獲取隊(duì)列中的 url對(duì)象
                    IPSite ();
                    ~IPSite (); 
                    Fifo<url> tab;      //隊(duì)列中進(jìn)行爬取的url列表
                     int fetch ();        //具體執(zhí)行爬取

               三 具體函數(shù)實(shí)現(xiàn)
                   (1) 構(gòu)造函數(shù)IPSite() 函數(shù)的具體實(shí)現(xiàn)為 lastAccess = 0 ; isInFifo = false ;
                   (2)IPSite::putUrl (url *u) 
                       將url放入IPSite的fifo隊(duì)列中,然后將isInFifo設(shè)置為true。如果lastAccess+waitDuration <= now
                       以及當(dāng)期存在空閑的連接,則可以 調(diào)用fetch以進(jìn)行爬取網(wǎng)頁(yè)。
                       否則將該IpSite加入進(jìn)okSites中。
                  (3)inline url *IPSite::getUrl ()  從fifo中獲取一個(gè)url
                   (4) fetch() 函數(shù),用以爬取網(wǎng)頁(yè)
                         Connexion *conn = global::freeConns->get(); //首先獲取一個(gè)空閑的連接
                         url *u = getUrl();                                          //獲取一個(gè)url
                         char res = getFds(conn, &(u->addr), u->getPort()); //然后根據(jù)url建立一個(gè)連接
                          if (res != emptyC) {       //下面則為一個(gè)具體發(fā)送http報(bào)文請(qǐng)求的過(guò)程
                            lastAccess = global::now;
                           conn->timeout = timeoutPage;
                          conn->request.addString("GET ");
                    if (global::proxyAddr != NULL) {
                      char *tmp = u->getUrl();
                      conn->request.addString(tmp);
                    } else {
                      conn->request.addString(u->getFile());
                    }
                    conn->request.addString(" HTTP/1.0\r\nHost: ");
                    conn->request.addString(u->getHost());
            #ifdef COOKIES
                    if (u->cookie != NULL) {
                      conn->request.addString("\r\nCookie: ");
                      conn->request.addString(u->cookie);
                    }
            #endif // COOKIES
                    conn->request.addString(global::headers);
                    conn->parser = new html (u, conn); //建立頁(yè)面解析類
                    conn->pos = 0;                              //獲取的數(shù)據(jù)中的下標(biāo)位置 ,pos
                    conn->err = success;
                    conn->state = res;
                    if (tab.isEmpty()) {
                      isInFifo = false;
                    } else {
                      global::okSites->put(this);
                    }
                    return 0;
                  }
               下面附帶上一次http請(qǐng)求的頭部的格式
              

            GET /index.html HTTP/1.1

            Accept:text/html

            User-Agent:larbin

            Host: ioa.rising.com.cn

            Fromjiangzy@rising.com.cn


              四 總結(jié):
                   該類IpSite主要用來(lái)向http服務(wù)器發(fā)送連接請(qǐng)求,并構(gòu)建出對(duì)應(yīng)的文件解析類html,存儲(chǔ)在conn中。


            posted on 2011-06-16 14:13 kahn 閱讀(546) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            国内精品伊人久久久久网站| 青草影院天堂男人久久| 伊人色综合久久| 久久久久综合中文字幕 | 丁香色欲久久久久久综合网| 东方aⅴ免费观看久久av| 精品国产VA久久久久久久冰 | 狠色狠色狠狠色综合久久| 人妻无码久久精品| 狠狠久久亚洲欧美专区| 久久国产精品波多野结衣AV| 久久天天躁狠狠躁夜夜avapp| 2022年国产精品久久久久| 99精品国产免费久久久久久下载| 久久香蕉国产线看观看99| 亚洲国产精品综合久久网络 | 久久久黄色大片| 欧美久久久久久午夜精品| 久久久久久久波多野结衣高潮 | 久久精品亚洲中文字幕无码麻豆| 亚洲人成无码www久久久| 精品久久久久中文字幕日本| 一级做a爰片久久毛片毛片| 日本免费久久久久久久网站| 香蕉久久av一区二区三区| 国产aⅴ激情无码久久| 久久久久国产精品麻豆AR影院| 天天综合久久久网| 伊人久久精品无码av一区| 老司机午夜网站国内精品久久久久久久久| 久久水蜜桃亚洲av无码精品麻豆| 无码人妻久久一区二区三区免费丨 | 国产成人AV综合久久| 国产99久久久久久免费看 | 久久亚洲精品国产精品婷婷 | 久久国产欧美日韩精品免费| 国产精品久久久久乳精品爆| 国产一级做a爰片久久毛片| 国产精品对白刺激久久久| 亚洲狠狠婷婷综合久久蜜芽| 亚洲精品乱码久久久久久中文字幕 |