国产一区二区三精品久久久无广告,中文无码伦av中文字幕,久久99久久99精品免视看看,亚洲a∨无码精品色午夜

網(wǎng)絡(luò)資源自動(dòng)采集技術(shù)反思

前言:尋找寫(xiě)作靈感?中文期刊網(wǎng)用心挑選的網(wǎng)絡(luò)資源自動(dòng)采集技術(shù)反思,希望能為您的閱讀和創(chuàng)作帶來(lái)靈感,歡迎大家閱讀并分享。

網(wǎng)絡(luò)資源自動(dòng)采集技術(shù)反思

摘要:人類(lèi)已經(jīng)進(jìn)入大數(shù)據(jù)時(shí)代,大數(shù)據(jù)產(chǎn)生了巨大的社會(huì)價(jià)值和商業(yè)價(jià)值,如何高效地獲取數(shù)據(jù),已成為提高未來(lái)競(jìng)爭(zhēng)力的關(guān)鍵要素。網(wǎng)絡(luò)爬蟲(chóng)就是一種高效的信息采集利器,利用它可以快速、準(zhǔn)確地采集我們想要的各種數(shù)據(jù)資源。但是隨著互聯(lián)網(wǎng)和Web技術(shù)的發(fā)展,各種反爬蟲(chóng)措施的使用,給網(wǎng)絡(luò)資源采集帶來(lái)了很多困難。因此,為了準(zhǔn)確高效地采集到需要的數(shù)據(jù),網(wǎng)絡(luò)爬蟲(chóng)也采取了具有針對(duì)性的反制措施。本文介紹了網(wǎng)絡(luò)信息自動(dòng)采集技術(shù)相關(guān)的基礎(chǔ)概念和原則,研究并歸納了網(wǎng)絡(luò)信息自動(dòng)采集技術(shù)的存在的主要難點(diǎn)和解決問(wèn)題的主要技術(shù)手段。

關(guān)鍵詞:網(wǎng)絡(luò)資源采集;反爬蟲(chóng);Scrapy;Selenium

0引言

人類(lèi)社會(huì)已經(jīng)進(jìn)入大數(shù)據(jù)時(shí)代,大數(shù)據(jù)深刻影響和改變著我們的工作和生活。隨著互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、社交網(wǎng)絡(luò)等的飛速發(fā)展,產(chǎn)生了巨量的大數(shù)據(jù),蘊(yùn)含著前所未有的社會(huì)價(jià)值和商業(yè)價(jià)值。尤其是人工智能浪潮的興起和深度學(xué)習(xí)技術(shù)的突破,不論在工程領(lǐng)域還是研究領(lǐng)域,數(shù)據(jù)已經(jīng)成為必不可少的一部分。大數(shù)據(jù)成為21世紀(jì)最重要的經(jīng)濟(jì)資源之一,正如馬云所說(shuō):未來(lái)最大的能源不是石油而是大數(shù)據(jù)。如何高效的獲取數(shù)據(jù),并對(duì)互聯(lián)網(wǎng)上的非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行清洗,得到結(jié)構(gòu)化數(shù)據(jù),以及對(duì)數(shù)據(jù)進(jìn)行挖掘、分析的能力,成為企業(yè)提高未來(lái)競(jìng)爭(zhēng)力的關(guān)鍵要素[1]。

1網(wǎng)絡(luò)資源采集基本原理和基礎(chǔ)原則

把互聯(lián)網(wǎng)比作一張巨大的網(wǎng),網(wǎng)上的每一個(gè)結(jié)點(diǎn)就相當(dāng)于這張網(wǎng)上的一個(gè)節(jié)點(diǎn),而采集的程序就相當(dāng)于網(wǎng)上的一只小蜘蛛,根據(jù)定制的規(guī)則,批量的獲取所需要的資源數(shù)據(jù),就是這只“小蜘蛛”所要完成的工作。因此,網(wǎng)絡(luò)資源采集又叫網(wǎng)絡(luò)爬蟲(chóng)(Webcrawler)或網(wǎng)絡(luò)蜘蛛(Webspider)。簡(jiǎn)單來(lái)說(shuō),網(wǎng)絡(luò)資源采集就是獲取網(wǎng)頁(yè)并提取和保存信息的自動(dòng)化程序,主要分為三步。

1.1獲取網(wǎng)頁(yè)

爬蟲(chóng)首先要做的就是獲取網(wǎng)頁(yè),也就是獲取網(wǎng)頁(yè)的源代碼。源代碼里包含了網(wǎng)頁(yè)的部分有用信息,所以將源代碼獲取之后,就可以從中間提取想要的信息。在Python中提供了許多庫(kù)來(lái)實(shí)現(xiàn)源代碼的獲取,如urllib、requests等。

1.2提取信息

獲取網(wǎng)頁(yè)源代碼之后,我們需要對(duì)網(wǎng)頁(yè)源代碼進(jìn)行分析,從中提取想要的數(shù)據(jù)。由于網(wǎng)頁(yè)的結(jié)構(gòu)具有一定的規(guī)則,因此可以根據(jù)網(wǎng)頁(yè)結(jié)點(diǎn)屬性、CSS選擇器或XPath選擇器來(lái)提取網(wǎng)頁(yè)信息,常用的庫(kù)有BeautifulSoup、pyquery、lxml等。

1.3保存數(shù)據(jù)

提取信息后,我們需要將數(shù)據(jù)保存到某處以便后續(xù)使用。保存形式多種多樣,可以簡(jiǎn)單保存為T(mén)XT文本或JSON文本,也可以保存到數(shù)據(jù)庫(kù),如MySQL或MongoDB等。另外,網(wǎng)絡(luò)資源自動(dòng)采集需要滿(mǎn)足以下原則:實(shí)時(shí)性原則,完整性原則,可靠性原則,準(zhǔn)確性原則,易用性原則[2]。

2網(wǎng)絡(luò)資源自動(dòng)采集現(xiàn)階段主要難點(diǎn)

互聯(lián)網(wǎng)信息資源豐富,但是非常的分散,不同的網(wǎng)站結(jié)構(gòu)不一、布局復(fù)雜、渲染方式多樣,對(duì)于不同的網(wǎng)站,通常需要針對(duì)性的配置,才能獲取需要的數(shù)據(jù)。此外,很多的網(wǎng)站還會(huì)專(zhuān)門(mén)采取一系列的“反爬”措施,比如:(1)使用驗(yàn)證碼驗(yàn)證用戶(hù)為非機(jī)器人;(2)設(shè)置登錄驗(yàn)證,用戶(hù)登錄之后才能獲取相關(guān)內(nèi)容;(3)使用動(dòng)態(tài)頁(yè)面,目前很多的網(wǎng)頁(yè)都會(huì)使用JavaScript來(lái)進(jìn)行頁(yè)面渲染,或者使用JS動(dòng)態(tài)生成請(qǐng)求參數(shù)及JS混淆加密,防止網(wǎng)絡(luò)爬蟲(chóng)的訪問(wèn);(4)IP封鎖,對(duì)于單位時(shí)間內(nèi)訪問(wèn)次數(shù)過(guò)多的IP,許多網(wǎng)站會(huì)對(duì)IP進(jìn)行封鎖,無(wú)法訪問(wèn);(5)字體混淆,部分網(wǎng)站實(shí)際頁(yè)面展示的文字、數(shù)字與網(wǎng)頁(yè)源代碼中的值并不相同,造成爬蟲(chóng)采集雖能正常運(yùn)行,但獲得的數(shù)據(jù)與實(shí)際數(shù)據(jù)不符。面對(duì)不同的問(wèn)題,就需要采用具有針對(duì)性的反制措施。爬蟲(chóng)與反爬蟲(chóng)技術(shù)就是在這種競(jìng)爭(zhēng)中,逐步發(fā)展起來(lái)的[3-4]。

3網(wǎng)絡(luò)資源采集現(xiàn)階段難點(diǎn)的解決技術(shù)手段

本節(jié)總結(jié)了筆者在工作中進(jìn)行網(wǎng)絡(luò)資源采集時(shí)碰到的一些問(wèn)題和解決問(wèn)題的主要技術(shù)手段。

3.1請(qǐng)求頭User-Agent驗(yàn)證

常見(jiàn)的簡(jiǎn)易反爬措施,網(wǎng)站通過(guò)驗(yàn)證User-Agent方式判斷請(qǐng)求是否為正常瀏覽器行為,如果發(fā)現(xiàn)非法UA,則返回錯(cuò)誤響應(yīng)。突破方法:為請(qǐng)求頭添加瀏覽器的User-Agent字符串即可,在大規(guī)模采集過(guò)程中可以使用UA池或調(diào)用fake_useragent模塊自動(dòng)動(dòng)態(tài)生成User-Agent并添加。

3.2用戶(hù)身份Cookie驗(yàn)證及JWT驗(yàn)證

多數(shù)網(wǎng)站會(huì)將登陸的用戶(hù)信息以鍵值對(duì)的形式保存在Cookie中,服務(wù)器收到請(qǐng)求后首先驗(yàn)證用戶(hù)身份,驗(yàn)證失敗則返回錯(cuò)誤響應(yīng)。JWT身份驗(yàn)證形式與Cookie大致相同,區(qū)別在于身份信息為請(qǐng)求頭特定的JWT字符串而非Cookie。突破方法:通過(guò)瀏覽器登陸后,抓包分析尋找登錄后的Cookie或JWT字符串,在爬蟲(chóng)運(yùn)行過(guò)程中,在請(qǐng)求中添加對(duì)應(yīng)Cookie或請(qǐng)求頭添加對(duì)應(yīng)字符串,即可獲得正確響應(yīng)。在使用Scrapy框架開(kāi)發(fā)爬蟲(chóng)的過(guò)程中,可將Cookie及JWT的添加過(guò)程寫(xiě)入DownloaderMiddleware的process_request方法中,在Scrapy運(yùn)行過(guò)程中通過(guò)中間件自動(dòng)添加請(qǐng)求頭信息,保證spider流程的可讀性。

3.3動(dòng)態(tài)頁(yè)面爬取

目前很多的網(wǎng)站都會(huì)使用JavaScript,Ajax(異步JavaScript和XML)技術(shù)和動(dòng)態(tài)HTML(dynamicHTML)技術(shù)進(jìn)行頁(yè)面渲染,生成動(dòng)態(tài)頁(yè)面,既可以使頁(yè)面更加豐富,交互功能更強(qiáng),還可以反爬蟲(chóng)。突破方法:一個(gè)有效的工具就是Selenium,Selenium是一個(gè)強(qiáng)大的網(wǎng)絡(luò)數(shù)據(jù)采集工具,最初是為網(wǎng)站自動(dòng)化測(cè)試而開(kāi)發(fā)的,它可以讓瀏覽器自動(dòng)加載頁(yè)面,獲取需要的數(shù)據(jù),甚至頁(yè)面截屏,或者判斷網(wǎng)站上某些動(dòng)作是否發(fā)生。Selenium自己不帶瀏覽器,因此需要與第三方瀏覽器結(jié)合使用,比如Firefox、Chrome、PhantomJS(如果使用Firefox,需要安裝GeckoDriver驅(qū)動(dòng),如果使用Chrome,需要安裝ChromeDriver驅(qū)動(dòng))。使用Selenium可以處理cookies、JavaScript、header等,模擬瀏覽器訪問(wèn)網(wǎng)頁(yè)時(shí)進(jìn)行的任何操作。另外,還可以使用Scrapy框架配合Splash服務(wù)進(jìn)行JS動(dòng)態(tài)生成和ajax網(wǎng)頁(yè)的內(nèi)容的采集,此方法可在Scrapy框架內(nèi)完成動(dòng)態(tài)內(nèi)容采集,方便scrapyd進(jìn)行整個(gè)爬蟲(chóng)項(xiàng)目的任務(wù)調(diào)度,更加適合大規(guī)模采集項(xiàng)目。Scrapy是一個(gè)用Python實(shí)現(xiàn)的為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)的應(yīng)用框架。Scrapy使用Twisted異步網(wǎng)絡(luò)庫(kù)來(lái)處理網(wǎng)絡(luò)通訊。該框架集成可高度擴(kuò)展的5大組件以及封裝完善的中間件模塊,可以高效(爬取效率和開(kāi)發(fā)效率)且高度定制采集需求來(lái)完成網(wǎng)站數(shù)據(jù)爬取任務(wù)。Splash是一個(gè)Javascript渲染服務(wù)。它是一個(gè)實(shí)現(xiàn)了HTTPAPI的輕量級(jí)瀏覽器,Splash是用Python實(shí)現(xiàn)的,同時(shí)使用Twisted和QT。Twisted(QT)用來(lái)讓服務(wù)具有異步處理能力,以發(fā)揮webkit的并發(fā)能力。在docker中下載并安裝Splash鏡像后,啟動(dòng)Splash服務(wù),python安裝scrapy_splash。在Scrapy項(xiàng)目中添加Splash服務(wù)地址,下載器中間件DOWNLOADER_MIDDLEWARE中添加Scrapy_splash相應(yīng)中間件后,即可在scrapy框架中使用SplashRequest請(qǐng)求方式通過(guò)splash服務(wù)獲得動(dòng)態(tài)渲染后的網(wǎng)頁(yè)響應(yīng)內(nèi)容[5-6]。

3.4JS動(dòng)態(tài)生成請(qǐng)求參數(shù)及JS混淆加密

在采集過(guò)程中,會(huì)遇到請(qǐng)求中出現(xiàn)了動(dòng)態(tài)參數(shù)的情況,這類(lèi)參數(shù)一般由網(wǎng)站中的JavaScript代碼生成并添加到關(guān)鍵的請(qǐng)求中,分析對(duì)應(yīng)的JS文件,發(fā)現(xiàn)JS被混淆加密,可讀性極低。這種反爬措施也變得愈發(fā)常見(jiàn),簡(jiǎn)單的爬蟲(chóng)邏輯被輕易拒之門(mén)外。突破方法:分析點(diǎn)擊事件或在控制點(diǎn)為JS打斷點(diǎn)的方式定位生成加密參數(shù)的JS代碼位置,找到生成參數(shù)的JS代碼后,可在反混淆網(wǎng)站中嘗試反混淆清洗,如果成功,可得到正常可讀的JS代碼,此時(shí)可在爬蟲(chóng)程序中仿寫(xiě)整個(gè)參數(shù)生成邏輯獲得參數(shù);如不能反混淆成功或加密邏輯過(guò)于繁密,可嘗試使用PyExecJS模塊直接在python環(huán)境中執(zhí)行該段JS代碼,也可獲得加密后的參數(shù),突破反爬限制。

3.5字體混淆

在一些網(wǎng)站中,實(shí)際頁(yè)面展示的文字、數(shù)字與網(wǎng)頁(yè)源代碼中的值并不相同,造成爬蟲(chóng)采集雖能正常運(yùn)行,但獲得的數(shù)據(jù)與實(shí)際數(shù)據(jù)不符,這是典型的字體混淆反爬特點(diǎn)。此類(lèi)反爬措施通過(guò)動(dòng)態(tài)下載ttf、woff、woff2等經(jīng)過(guò)混淆加密的字體文件生成網(wǎng)頁(yè)源代碼。突破方法:首先抓包分析請(qǐng)求的響應(yīng)過(guò)程,獲取每次請(qǐng)求后的字體下載url,在爬蟲(chóng)程序中對(duì)應(yīng)獲得字體文件的響應(yīng),利用python第三方模塊TTFont解析字體文件響應(yīng)數(shù)據(jù),獲得混淆后的字體unicode碼與字體文件中name的映射關(guān)系,在利用獲得的name值與字體中帶有的或根據(jù)字體文件排序歸納的f_map獲得unicode與實(shí)際正確字符的對(duì)應(yīng)關(guān)系。

3.6IP封鎖

很多網(wǎng)站為了防止網(wǎng)絡(luò)攻擊和惡意爬蟲(chóng),通常會(huì)采用IP訪問(wèn)限制措施,對(duì)單位時(shí)間內(nèi)訪問(wèn)量過(guò)大的IP地址,會(huì)進(jìn)行封鎖限制訪問(wèn),導(dǎo)致采集系統(tǒng)無(wú)法正常訪問(wèn)指定頁(yè)面。突破方法:針對(duì)這種問(wèn)題,通常會(huì)采用IP的方法,為了采集效率和成功率,需要購(gòu)買(mǎi)IP,然后維護(hù)一個(gè)IP池,將所有的IP放在一個(gè)池子里面,每次訪問(wèn)之前獲取一個(gè)IP,如果IP失效,則丟棄然后重新獲取,IP池還需要實(shí)現(xiàn)自動(dòng)獲取新的IP的功能和刪除失效IP的功能,以支撐高效的網(wǎng)絡(luò)采集任務(wù)。

4結(jié)語(yǔ)

隨著互聯(lián)網(wǎng)與移動(dòng)互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)信息爆炸式增長(zhǎng),不論是企業(yè)還是個(gè)人,都越來(lái)越需要網(wǎng)絡(luò)資源自動(dòng)采集技術(shù)的支持。同時(shí),各種新的“反爬蟲(chóng)”策略也是層出不窮,對(duì)于網(wǎng)絡(luò)資源采集系統(tǒng)的要求也越來(lái)越高。對(duì)企業(yè)來(lái)說(shuō),擁有一套比較優(yōu)良的網(wǎng)絡(luò)資源采集系統(tǒng),可以幫助企業(yè)在資源采集、整合方面節(jié)約大量的人力與資金。在當(dāng)前人工智能和大數(shù)據(jù)飛速發(fā)展的時(shí)代,網(wǎng)絡(luò)資源采集技術(shù)的研究與開(kāi)發(fā),也關(guān)系到未來(lái)國(guó)家、企業(yè)的綜合實(shí)力。總之,網(wǎng)絡(luò)資源自動(dòng)采集技術(shù)需求巨大,前景廣闊。

參考文獻(xiàn)

[1]韓群鑫.網(wǎng)絡(luò)信息資源采集研究[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2007(04):63-66.

[2]劉水.網(wǎng)絡(luò)信息采集及數(shù)據(jù)分析結(jié)果可視化的研究與實(shí)現(xiàn)[D].西安電子科技大學(xué),2013.

[3]吳海燕.互聯(lián)網(wǎng)信息采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].中國(guó)人民大學(xué),2012.

[4]朱志華,張帆.網(wǎng)絡(luò)信息資源整合的現(xiàn)狀研究[C]//中國(guó)醫(yī)學(xué)信息教育25周年暨全國(guó)醫(yī)學(xué)信息教育可持續(xù)發(fā)展學(xué)術(shù)研討會(huì),2010.

[5]周瑜智,劉展鳴,王博,等.關(guān)于網(wǎng)絡(luò)信息自動(dòng)采集技術(shù)的難點(diǎn)及其解決辦法的研究[J].科技傳播,2013(6):204-205.

[6]涂輝,王鋒,商慶偉.Python3編程實(shí)現(xiàn)網(wǎng)絡(luò)圖片爬蟲(chóng)[J].電腦編程技巧與維護(hù),2017(23):21-22.

作者:李嵐清 王恒 晏曉峰 單位:國(guó)家工業(yè)信息安全發(fā)展研究中心

主站蜘蛛池模板: 久久人人97超碰a片精品| 在厨房被c到高潮a毛片奶水| 粉嫩被粗大进进出出视频| 国模小黎自慰gogo人体| 美日韩在线视频一区二区三区| 人人妻人人澡人人爽欧美一区九九| 国产裸体歌舞一区二区| 放荡的少妇2欧美版| 国产又色又爽无遮挡免费软件| 狠狠色丁香婷婷亚洲综合| 5060国产午夜无码专区| 国产高清不卡免费视频| 69精品人人人人| 国产精品久久久久久久妇| 中文精品久久久久人妻| 一本加勒比hezyo无码资源网| 久久久久久久99精品国产片| 国产色系视频在线观看| 亚洲精品伊人久久久大香| 国产精品yy9299在线观看| 无码网站天天爽免费看视频| 国产作爱视频免费播放| 亚洲国产区男人本色| 一本之道高清乱码久久久| 成人免费毛片aaaaaa片| 国产一区二区怡红院| 亚洲中文字幕伊人久久无码| 国产精品无码一区二区在线| 亚洲日韩精品无码一区二区三区| 国产av无码专区亚洲精品| 狠狠综合久久综合88亚洲爱文| 丰满的少妇xxxxx青青青| 久久久久久亚洲精品不卡| 97色成人综合网站| 五十路熟妇高熟无码视频| 精品日产卡一卡二卡国色天香| 猫咪www免费人成网站无码| 亚洲精品乱码久久久久久蜜桃| 忍不住的亲子中文字幕| 亚洲精品偷拍影视在线观看| 激情 自拍 另类 亚洲|