
摘要:隨著互聯網技術發展,網絡所承載的數據逐漸體現其價值,且網絡數據體量日益倍增,對網絡數據的利用越來越受到各行各業的重視。該網絡爬蟲系統以基于Python語言的Scrapy網絡爬蟲框架技術為基礎,綜合考慮對反爬機制的應對措施及相關系統優化,滿足一定的爬取效率要求,便于數據挖掘等數據研究利用。系統主要實現了實體管道模塊、爬蟲業務模塊、中間件模塊、Cookies池模塊。過程中涉及到的關鍵技術主要包括Cookies池服務、反爬蟲策略、頁面解析、Selenium+ChromeDriver實現模擬訪問、MongoDB實現數據持久化存儲等。
關鍵詞:爬蟲;Scrapy框架;Selenium+ChromeDriver;MongoDB
1.項目研究的背景及意義
隨著大數據發展戰略的逐步推進,打破信息孤島,合理整合利用數據信息成為信息融合技術的關鍵要素[1]。而及時掌握各種消息并對其進行分析和處理具有重大社會意義。隨著國家持續推進全國網絡安全和信息化建設,互聯網信息技術不斷創新發展,經濟數字化轉型已成大勢所趨[2]。隨著網絡效應的不斷增強,微博等用戶群體的不斷擴大,其中某些平臺每天都會有過億的博文發送量及轉發量,在網絡數據產生和消費中占到很大比例。
網絡爬蟲技術作為對網絡數據提取的基本技術在近些年隨網絡信息技術發展也不斷推陳出新,既是作為搜索引擎的基礎結構推動著互聯網網頁瀏覽訪問的基本進程,又為新時代數據技術提供著多樣化的功能性應用場景[3]。Python語言作為當今流行語言之一,以廣泛的開源庫支持和語言特性與爬蟲系統開發有著很高的契合度[4]。
信息數據利用價值越來越重視,諸多門戶網站開始并逐步加強對可能的數據訪問行為進行判斷和分析,對其中的非法訪問采取很多有效防范措施,因此在合法的應用范圍內相關網絡爬蟲需要遵循相應的數據訪問方式,本文基于Scrapy網絡爬蟲框架、Python語言等相關技術,并結合目前主流社交平臺研究、設計并開發了網絡爬蟲系統,實現數據的爬取。
2.爬蟲的種類及爬取策略
根據所構建的爬蟲系統所應用的場景,常將爬蟲技術分為三類:通用爬蟲、聚焦爬蟲、增量式爬蟲。通用爬蟲通常應用在搜索引擎系統中,聚焦爬蟲通常應用于對特定人群提供主題信息服務的系統中,增量式爬蟲主要應用于特定網站的數據持續獲取系統中。
主要的爬行策略有深度優先爬行策略、廣度優先爬行策略、大站優先策略、反鏈策略、其他爬行策略等。除了以上這些策略,還有一些特定場景下比較適用的爬蟲策略如OPIC策略、PartialPageRank策略等[5]。
反爬機制指的是相關門戶網站為了防止網站重要數據的泄露或網站異常訪問造成不利影響,在網站設計時運用一些策略或技術手段限制用戶訪問,通過對敏感行為的分析和控制來防止爬蟲工具對網站的異常訪問。
在爬取過程中需要充分考慮目標網站的反爬機制,做到合理合法的獲取數據。
3.系統使用到的關鍵技術
URL去重可以以下集中策略來實現(1)數據庫去重,(2)集合去重,(3)基于集合的Hash優化去重,(4)布隆過濾器。
網頁解析分為靜態頁面解析和動態頁面解析。
數據庫采用MongoDB。數據存儲采用BSON格式來進行以獲取更快的速度和更高的安全性。
網站登錄機制采用模擬登錄方法來進行。
4.需求分析及系統實現
系統總體來看有如下幾點需求:(1)克服反爬機制,(2)實現爬蟲邏輯,(3)數據存儲。系統對硬件資源的需求主要取決于爬蟲系統的執行效率要求,依據已有的相關爬蟲項目建設情況來看,實現單日萬級、十萬級、百萬級、千萬級爬取量所要求硬件條件逐漸提升。開發上充分考慮所需要的時間周期,為在有效期限內完成項目的有效成品,本系統采用增量式開發,在項目初期完成基本業務邏輯實現系統基本功能,而后通過擴展接口不斷提高系統執行效率和擴展功能。
本系統的非功能性需求主要體現在運行使用的穩定性和擴展性等方面。例如:執行效率、可靠性、可擴展性等。
作為單機應用系統開發,項目采用分層架構,結合Scrapy框架技術在具體系統分層上有五個層次,系統架構如圖1所示。
在軟件程序設計方面所要實現的具體的功能模塊主要在中間件層、業務邏輯層與管道層。
對于本系統所爬取的數據,常常是半結構型數據,用傳統的關系型數據庫存儲一方面會對系統執行效率有較大影響,另一方面也不利于數據的后續使用,因此本系統采用基于NoSQL查詢語句的MongoDB數據庫。
5.總結與展望
本系統以基于Python語言的Scrapy網絡爬蟲框架為基礎,利用Selenium + Chrome模擬登陸、頁面解析技術、UA偽裝、MongoDB等技術,具體實現了實體管道、爬蟲、中間件、服務池等模塊,完成了對用戶信息、用戶關系、用戶發表信息等數據的爬取和持久化存儲。
系統不足之處:在實現上系統采用了單機架構,數據爬取效率在一定程度上受到了限制。
參考文獻:
[1]KEVIN.網絡爬蟲技術原理[J].計算機與網絡,2018,44(10).
[2]高宇,楊小兵.基于聚焦型網絡爬蟲的影評獲取技術[J].中國計量大學學報,2018,29(3).
[3][美]瑞安·米切爾(RyanMitchell).Python網絡爬蟲權威指南第2版.人民郵電出版社,2019.
[4]楊建.分布式網絡爬蟲技術及對其安全防御研究[J].網絡安全技術與用,2018(04):6-7
[5]汪兵.基于Scrapy框架的分布式爬蟲系統設計與實現[D].合肥工業大學,2019.
基金項目:2017年度河南省高等學校青年骨干教師培養計劃項目“基于XSLT和STACS的高校云智慧校園建設研究”(項目編號:2017GGJS292)。
作者簡介:呂定輝(1980-),男,碩士研究生/講師,研究方向:計算機網絡技術。