• <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>
            posts - 297,  comments - 15,  trackbacks - 0

            這里是維基百科對網絡爬蟲的詞條頁面。網絡爬蟲以叫網絡蜘蛛,網絡機器人,這是一個程序,其會自動的通過網絡抓取互聯網上的網頁,這種技術一般可能用來檢查你的站點上所有的鏈接是否是都是有效的。當然,更為高級的技術是把網頁中的相關數據保存下來,可以成為搜索引擎。

            從技相來說,實現抓取網頁可能并不是一件很困難的事情,困難的事情是對網頁的分析和整理,那是一件需要有輕量智能,需要大量數學計算的程序才能做的事情。下面一個簡單的流程:

             

            在這里,我們只是說一下如何寫一個網頁抓取程序。

            首先我們先看一下,如何使用命令行的方式來找開網頁。

            telnet somesite.com 80
            GET /index.html HTTP/1.0
            按回車兩次

            使用telnet就是告訴你其實這是一個socket的技術,并且使用HTTP的協議,如 GET方法來獲得網頁,當然,接下來的事你就需要解析HTML文法,甚至還需要解析Javascript,因為現在的網頁使用Ajax的越來越多了,而很多網頁內容都是通過Ajax技術加載的,因為,只是簡單地解析HTML文件在未來會遠遠不夠。當然,在這里,只是展示一個非常簡單的抓取,簡單到只能做為一個例子,下面這個示例的偽代碼:

            取網頁
            for each 鏈接 in 當前網頁所有的鏈接
            {
            if(如果本鏈接是我們想要的 || 這個鏈接從未訪問過)
            {
            處理對本鏈接
            把本鏈接設置為已訪問
            }
            }
            require “rubygems”
            require “mechanize”
            class Crawler < WWW::Mechanize
            attr_accessor :callback
            INDEX = 0
            DOWNLOAD = 1
            PASS = 2
            def initialize
            super
            init
            @first = true
            self.user_agent_alias = “Windows IE 6″
            end
            def init
            @visited = []
            end
            def remember(link)
            @visited << link
            end
            def perform_index(link)
            self.get(link)
            if(self.page.class.to_s == “WWW::Mechanize::Page”)
            links = self.page.links.map {|link| link.href } - @visited
            links.each do |alink|
            start(alink)
            end
            end
            end
            def start(link)
            return if link.nil?
            if(!@visited.include?(link))
            action = @callback.call(link)
            if(@first)
            @first = false
            perform_index(link)
            end
            case action
            when INDEX
            perform_index(link)
            when DOWNLOAD
            self.get(link).save_as(File.basename(link))
            when PASS
            puts “passing on #{link}”
            end
            end
            end
            def get(site)
            begin
            puts “getting #{site}”
            @visited << site
            super(site)
            rescue
            puts “error getting #{site}”
            end
            end
            end

            上面的代碼就不必多說了,大家可以去試試。下面是如何使用上面的代碼:

            require “crawler”
            x = Crawler.new
            callback = lambda do |link|
            if(link =~/\\.(zip|rar|gz|pdf|doc)
            x.remember(link)
            return Crawler::PASS
            elsif(link =~/\\.(jpg|jpeg)/)
            return Crawler::DOWNLOAD
            end
            return Crawler::INDEX;
            end
            x.callback = callback
            x.start(”http://somesite.com”)

            下面是一些和網絡爬蟲相關的開源網絡項目

            from:
            http://coolshell.cn/?p=27

            posted on 2010-02-18 21:54 chatler 閱讀(711) 評論(0)  編輯 收藏 引用 所屬分類: SearchEngine
            <2009年9月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            常用鏈接

            留言簿(10)

            隨筆分類(307)

            隨筆檔案(297)

            algorithm

            Books_Free_Online

            C++

            database

            Linux

            Linux shell

            linux socket

            misce

            • cloudward
            • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

            network

            OSS

            • Google Android
            • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
            • os161 file list

            overall

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            一本一道久久精品综合| 69久久精品无码一区二区| 久久久WWW成人免费毛片| 久久99精品国产麻豆婷婷| 一本一本久久a久久精品综合麻豆| 久久精品一区二区三区AV| 久久精品www人人爽人人| 狠狠色综合网站久久久久久久| 久久国产劲爆AV内射—百度| 欧美精品一本久久男人的天堂| 中文字幕无码av激情不卡久久| 国产精品久久99| 亚洲国产精品无码久久久不卡| 国产精品亚洲美女久久久| 久久久噜噜噜www成人网| 久久久精品国产亚洲成人满18免费网站| 伊色综合久久之综合久久| 色成年激情久久综合| 久久国产色AV免费观看| 九九精品久久久久久噜噜| 久久久久国产精品嫩草影院| 精品免费tv久久久久久久| 色综合久久综合中文综合网| 亚洲精品乱码久久久久久不卡| 亚洲国产成人久久精品动漫| 97超级碰碰碰久久久久| 久久人人爽人人爽人人片AV高清| 看全色黄大色大片免费久久久| 久久亚洲国产中v天仙www| 狠狠色婷婷久久一区二区三区| 午夜精品久久久久久中宇| 久久狠狠爱亚洲综合影院| 99久久国产宗和精品1上映 | 久久久久亚洲Av无码专| 国产精品久久久久蜜芽| 色婷婷狠狠久久综合五月| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 国产精品无码久久综合| 久久精品国产亚洲AV嫖农村妇女 | 久久久久久久久久久久久久| 久久人人添人人爽添人人片牛牛|