亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        目前互聯(lián)網(wǎng)中的網(wǎng)絡(luò)爬蟲的原理和影響

        2019-12-20 19:30:04趙鑫煒
        數(shù)碼設(shè)計 2019年5期
        關(guān)鍵詞:搜索引擎語言信息

        趙鑫煒

        (四川大學(xué)錦城學(xué)院計算機(jī)與軟件學(xué)院 四川 成都 611731)

        目前,網(wǎng)絡(luò)爬蟲技術(shù)(Web Crawler)已經(jīng)應(yīng)用于互聯(lián)網(wǎng)的絕大多數(shù)地方。其體現(xiàn)為有搜索行為發(fā)生的時刻也就意味著爬蟲技術(shù)正在應(yīng)用,但是搜索引擎僅是爬蟲技術(shù)其中一個應(yīng)用點(diǎn)。爬蟲技術(shù)的應(yīng)用場景簡而言之就是就是把在網(wǎng)頁上顯示的信息通過代碼技術(shù)自動獲取處理需要的信息到本地的過程,這種行為也就建立信息獲得者與被信息被獲得者的利弊關(guān)系。

        1 網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)原理

        1.1 網(wǎng)絡(luò)爬蟲技術(shù)語言的選擇

        應(yīng)用的與爬蟲技術(shù)目前主流的分別是C\C++,java和python,三者都是實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲十分成熟的語言。目前互聯(lián)網(wǎng)中主流的搜索引擎都是采用了C\C++編寫爬蟲,擁有cspider等框架,c/c++不失作為最高效的爬蟲語言之一,但學(xué)習(xí)成本和實(shí)現(xiàn)成本高昂。Java作為一個老牌主流語言在爬蟲的實(shí)現(xiàn)方面已有較為成熟的框架SeimiCrawler、WebMagic等,有著優(yōu)秀的線程進(jìn)程管理機(jī)制,同時也能夠適應(yīng)較為負(fù)責(zé)的爬蟲設(shè)計。

        Python作為一門最近興起的語言擁有強(qiáng)大的庫支持和穩(wěn)定的線程,進(jìn)程模式,這使python也成為編寫爬蟲較為主流的語言。其它語言例如php等因為糟糕的線程機(jī)制或過于小眾實(shí)現(xiàn)成本太高而沒有成為目前爬蟲技術(shù)的主流選擇。

        1.2 網(wǎng)絡(luò)爬蟲的基本流程

        一個網(wǎng)絡(luò)爬蟲所需完成最基本的工作[1]如下:(1)在一個網(wǎng)頁上,獲取網(wǎng)頁的標(biāo)題和網(wǎng)頁中的摘要;(2)將搜集到的網(wǎng)頁標(biāo)題,鏈接,網(wǎng)頁的摘要放入數(shù)據(jù)庫中;(3)根據(jù)當(dāng)前網(wǎng)頁的內(nèi)容,搜集網(wǎng)頁中的鏈接信息,并根據(jù)鏈接順序搜索相應(yīng)鏈接網(wǎng)頁的內(nèi)容。

        首先明確在流程中所需要的必要幾個關(guān)鍵點(diǎn)(1)url統(tǒng)一資源定位符:為爬蟲指明就提需要獲取資源在互聯(lián)網(wǎng)中的地址(2)網(wǎng)頁請求:在用戶的正常操作時候點(diǎn)擊一個鏈接向服務(wù)器發(fā)送了一個請求(request),這個請求傳到服務(wù)器邏輯處理過后又向用戶發(fā)送了一個客戶端所需要的響應(yīng)信息(response),在爬蟲技術(shù)里就需要通過代碼來模擬請求和處理返回的響應(yīng)信息獲得目標(biāo)信息(3)DOM解析:實(shí)際上在客戶端與服務(wù)器上傳輸?shù)牟皇怯脩艨吹降木W(wǎng)頁頁面,而是一組由服務(wù)器組裝好包含目標(biāo)數(shù)據(jù)的代碼,這些代碼通過瀏覽器DOM樹渲染成客戶端的頁面,DOM文檔中包含了目標(biāo)數(shù)據(jù)。

        一個完整的爬蟲程序流程:首先通過(1)根據(jù)構(gòu)造一個已知的url向服務(wù)器發(fā)送網(wǎng)頁請求(2)正確請求到需要的響應(yīng)信息,否則回到第一步發(fā)送正確網(wǎng)絡(luò)請求(3)對返回的響應(yīng)信息進(jìn)行DOM解析,重復(fù)第一步構(gòu)造新的url判進(jìn)行新的網(wǎng)頁請求(4)對DOM文檔數(shù)據(jù)進(jìn)行過濾獲得目標(biāo)信息并保存到本地。

        基于java實(shí)現(xiàn)上述流程至少需要一個啟動爬蟲項目的Crawler啟動類、一個用于實(shí)現(xiàn)多線程的MultithreadCrawler類、urlLinks類、一個用來發(fā)送請求和響應(yīng)RequestAndResponse類、一個用來獲取響應(yīng)信息內(nèi)容ResponseData類、一個用來過濾提取響應(yīng)信息的DataDetector類。實(shí)現(xiàn)過程為在UrlLinks類里使用Set來存放url和一個LinkedList設(shè)置需要訪問的url序列,MultithreadCrawler中Thread方法實(shí)現(xiàn)多線程提高效率,RequestAndResponse類中使用HttpClient方法根據(jù)構(gòu)造好的url向服務(wù)器發(fā)送實(shí)際請求,ResponseData檢查返回的響應(yīng)信息是否是我們需要的數(shù)據(jù)并決定是否繼續(xù)請求,DataDetector使用cssSelector選擇需要的元素并通過正則表達(dá)等方法獲取到需要的信息。這是在最理想的情況下使用爬蟲技術(shù)獲取到最簡單的數(shù)據(jù),在實(shí)際操作中更多復(fù)雜的情況產(chǎn)生。

        1.3 網(wǎng)絡(luò)爬蟲的技術(shù)難點(diǎn)

        本文在爬蟲流程所述第一步構(gòu)造url就是爬蟲設(shè)計者需要攻克的第一個方向,絕大多數(shù)目標(biāo)資源都無法直接獲得url。爬蟲技術(shù)本身就是一個極其耗費(fèi)網(wǎng)絡(luò)帶寬和機(jī)器資源的程序,這也要求設(shè)計者良好的控制爬蟲程序的多線程控制。對爬取程序的算法的設(shè)計,爬蟲算法 有廣度優(yōu)先策略(BFS)、深度優(yōu)先策略(DFS)、非完全PageRank策略(Partial PageRank)、OCIP策略(Online Page Importance Computation)等,從而影響爬取的整律回報率,決定了網(wǎng)絡(luò)爬蟲得到全局范圍內(nèi)的最優(yōu)結(jié)果。在獲取到網(wǎng)頁響應(yīng)信息后還需要正確的解析提取。

        2 爬蟲技術(shù)的博弈

        2.1 網(wǎng)絡(luò)爬蟲的現(xiàn)狀

        網(wǎng)絡(luò)爬蟲的根據(jù)功能分類中可以分為網(wǎng)頁類爬蟲和接口類爬蟲。前者是被搜索引擎所用,原理是根據(jù)互聯(lián)網(wǎng)上的鏈接進(jìn)行遍歷獲取網(wǎng)頁。后者是根據(jù)特定的接口構(gòu)造精準(zhǔn)的API獲取大量目標(biāo)數(shù)據(jù),例如第三方火車票、機(jī)票購票軟件就是通過特點(diǎn)API獲取到票務(wù)信息。

        根據(jù)具體引用的不同又分為三類[2],批量型爬蟲(Batch Crawler)、增量型爬蟲(Incremental Crawler)和垂直型爬蟲(Focused Crawler)。批量型爬蟲主要是適應(yīng)于小型需求用來爬取設(shè)定好范圍目標(biāo)特定目標(biāo)的資源,例如目前的為保持實(shí)時更新的搜索引擎。垂直型爬蟲應(yīng)用于在一個大范圍爬取目標(biāo)里面精確爬取到目標(biāo)從而節(jié)省資源,例如需要在商城中爬取到所有有關(guān)計算機(jī)硬件的商品。

        根據(jù)爬蟲是意圖可以分為善意型和惡性型。善意型爬蟲主要是被爬取方希望被此爬蟲收錄或者雙方擁有合作協(xié)議,諸多著名搜索引擎就是一個善意的網(wǎng)絡(luò)爬蟲,也有部分擁有合作協(xié)議的雙方利用爬蟲進(jìn)行雙方數(shù)據(jù)庫補(bǔ)全、數(shù)據(jù)交換等。惡意爬蟲主要是未授權(quán)的第三方爬取目標(biāo)資源的爬蟲程序,主要可以應(yīng)用于商業(yè)數(shù)據(jù)分析競爭,數(shù)據(jù)庫惡意獲取等,惡意爬蟲不光會對被爬取方造成帶寬服務(wù)器等硬件負(fù)擔(dān)還會盜取到更有價值的商業(yè)信息。

        2.2 網(wǎng)絡(luò)爬蟲的攻防

        在互聯(lián)網(wǎng)中爬蟲于反爬蟲技術(shù)之間的攻防時時刻刻都在發(fā)生,本小節(jié)將介紹幾種較為常見的爬蟲攻防策略。

        (1)首先爬蟲實(shí)際是在代碼層面進(jìn)行網(wǎng)頁請求,此時網(wǎng)站可以檢測訪問者是否是瀏覽器訪問從而封堵部分爬蟲,爬蟲同時也可以偽造自己的請求頭為自己訪問添加一個User-Agent使網(wǎng)站判斷自己為網(wǎng)頁訪問。(2)對用戶的操作彈出驗證碼驗證,普通的爬蟲會不斷根據(jù)爬蟲設(shè)計者的設(shè)計重復(fù)的爬取當(dāng)網(wǎng)站檢測到大量的重復(fù)請求后會彈出驗證碼驗證訪問者是否是機(jī)器,而爬蟲可以借助更多的算法設(shè)計來識別當(dāng)前驗證碼并自動填入后繼續(xù)爬取或借助第三方打碼平臺填入驗證碼。(3)對于有價值的數(shù)據(jù)設(shè)定登錄可訪問,網(wǎng)站一般會通過儲存在客戶端的cookies、token和session來判斷當(dāng)前用戶,爬蟲程序當(dāng)然也可以通過更復(fù)雜的方法來偽造這些信息。(4)網(wǎng)站從服務(wù)器返回一組加密過的字段通過前端復(fù)雜的JavaScript來解析這些字段正常顯示,爬蟲也就需要強(qiáng)大是js功力來逆向模擬這些js處理。(5)由于爬蟲程序是在同一ip地址下大批量訪問,網(wǎng)站會檢測同一個ip的訪問頻率阻止爬蟲,爬蟲程序此時可以購買更多的ip地址組成ip池來應(yīng)對。

        3 結(jié)語

        本文闡述了目前網(wǎng)絡(luò)爬蟲的基本原理,實(shí)現(xiàn)爬蟲技術(shù)所需要的關(guān)鍵技術(shù)點(diǎn)和技術(shù)難點(diǎn),在基于java語言實(shí)現(xiàn)的一個基本網(wǎng)絡(luò)爬蟲流程。分析了主要爬蟲的幾種分類方法和實(shí)例,在目前爬蟲技術(shù)在網(wǎng)絡(luò)中出現(xiàn)博弈現(xiàn)象和幾種主要的攻防策略體現(xiàn)。當(dāng)今數(shù)據(jù)爆炸時代,數(shù)據(jù)就像一個鉆石礦,當(dāng)它的首要價值被發(fā)掘后仍能不斷給予[2],爬蟲技術(shù)就是為了獲取這些數(shù)據(jù)而生,爬蟲技術(shù)的發(fā)展和博弈會將日益突出。

        猜你喜歡
        搜索引擎語言信息
        語言是刀
        文苑(2020年4期)2020-05-30 12:35:30
        讓語言描寫搖曳多姿
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        累積動態(tài)分析下的同聲傳譯語言壓縮
        網(wǎng)絡(luò)搜索引擎亟待規(guī)范
        我有我語言
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        基于Nutch的醫(yī)療搜索引擎的研究與開發(fā)
        廣告主與搜索引擎的雙向博弈分析
        搜索,也要“深搜熟濾”
        亚洲欧美日韩国产一区二区精品| 日本办公室三级在线看| 亚洲国产精品久久久婷婷| 日本女优中文字幕在线播放| 无码国内精品人妻少妇蜜桃视频| 国产精品对白刺激久久久| 亚洲电影一区二区三区| 色噜噜精品一区二区三区| 网址视频在线成人亚洲| 丰满少妇被啪啪到高潮迷轩| 亚洲国产精品无码一线岛国| 久久99国产综合精品| 国产av永久无码天堂影院| 男人边吃奶边做好爽免费视频| 狠狠丁香激情久久综合| 亚洲精彩视频一区二区| 国产一区二区三区视频地址| 久久久无码精品亚洲日韩按摩| 五月天综合在线| 亚洲中文字幕熟女五十| 中文字幕成人乱码熟女精品国50| 激情综合色五月丁香六月欧美| 天天燥日日燥| 亚洲熟妇在线视频观看| 中文字幕人成乱码中文| 成年av动漫网站18禁 | 亚洲va中文字幕无码久久不卡| 国产一起色一起爱| 青青草免费手机直播视频| 高清偷自拍亚洲精品三区| 最新国产一区二区精品久久| 国产精品人成在线765| 18禁止进入1000部高潮网站| 中文字幕乱码免费视频| 娇妻粗大高潮白浆| 国产成人亚洲精品一区二区三区 | 精品福利视频一区二区三区| 人人爽亚洲aⅴ人人爽av人人片| 亚洲精品偷拍自综合网| 最新亚洲人成网站在线观看| 在线精品无码一区二区三区 |