魯鑫 肖小玲
摘要:本文先簡述scrapy框架的平臺架構,然后介紹了網絡爬蟲的流程,并說明了爬蟲程序的設計與實現的基本流程。基于這些技術,本文設計實現了基于Scrapy框架下的網絡爬蟲。本文給出了網絡爬蟲的主要流程,以及主要的模塊,包括item模塊、spider模塊以及scheduler模塊。并且,本文對網絡爬蟲的具體實現進行了介紹,包括UA的實現、頁面抓取的實現、數據提取的實現等。最后,本設計在Linux操作系統下進行了相關測試。對網絡爬蟲的功能和性能進行了測試,爬蟲的運行總體來說較為順利,且對電腦性能的要求不高。該爬蟲基本完成了本文的研究目的。通過本次的研究,對網絡爬蟲的設計與實現有了更深的理解。也對scrapy框架有了更加深刻的認識。
關鍵詞:網絡爬蟲;Scrapy框架;數據提取;頁面抓取
中圖分類號:TP311? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)23-0134-03
1 前言
在如今信息高速發展的萬維網上,像百度、谷歌這些傳統引擎對信息的搜索全都是在對關鍵字處理的方式的基礎上進行的,并不能精確的定位用戶的需求,這種對信息的搜索處理方式有著天然的劣勢和局限。首先,它不能很好地定位用戶所需的精確數據,其次,它所返回的數據是非常繁多冗雜的,其中包含大量用戶所不關心的數據,這對用戶在進行數據查看是非常沉重的。
為了對萬維網上的數據進行特定的搜索,各種搜索引擎也是層出不窮,搜索引擎在數據搜集中站著越來越重要的地位,但正是因為信息的高速發展,用戶對信息的搜索也是越來越嚴苛,如今的搜索引擎也越來越難以滿足用戶的需求[1]。
萬維網其實就是一個巨大信息和數據的集合,只是這種集合并沒有規律可言。但如果我們將這種集合通過特定的技術和手段進行有效的檢索,在擁有巨大用戶的情況下,這種檢索將會具有不可衡量的價值和作用。而傳統搜索引擎對數據的處理并不能完全滿足用戶的需求。用戶在不同的地點和不同的時間,往往有著不一樣的數據需求。傳統引擎所返回的數據包含大量用戶完全不關心的內容,也并不能對用戶的需求進行精確的定位。一個靈活高效又能完全符合用戶需求的爬蟲設計就越來越具有現實意義。
2 發展現狀及存在問題
此課題主要的目的是利用scrapy_redis 框架類建立分布式的斷點續爬的網絡爬蟲程序,同時要保證爬取數據時代碼的穩定性和高效性,又能完全滿足用戶對數據精確抓取的需求[2]。
爬蟲的基本原理是運用xpath 進行對url 進行定位,并用文本定位工具對用戶所需求的數據進行精確抓取。為了使網絡爬蟲的效率更高,在設計爬蟲程序時就必須利用redis 數據庫進行服務器之間的連接,實現多臺服務器共同爬取數據的功能。通過對IP池和UA的設置,避免了我們爬蟲被對方服務器識別為惡意程序的情況。在以上技術理論的支持下,我們所設計的爬蟲程序要既能實現高效抓取數據、又能根據用戶的需求對數據進行精確定位的功能[3]。
其實,傳統搜索引擎的缺點早就20世紀已經被發現了,對于爬蟲的研究也早已開始了。隨著年代的發展,爬蟲的技術也越來越多,越來越完善穩定。萬維網上的數據是以完全虛擬的方式存在于我們的認知中,由于傳統搜索引擎的存在,我們才能將萬維網上的數據以實體的形式呈現在我們的眼前,變成一個我們可知、可感的真實存在體。但是,不能對數據進行特定搜索和特定抓取的傳統搜索引擎,只能以web1.0的形式存在。
未來的發展中,萬維網中的數據抓取、精確定位和特定篩選,是會占據主流地位的。這種對數據的篩選會越來越滿足用戶的需求。利用scrapy_redis 框架所設計的爬蟲程序正好定位了用戶的精確需求,日后,也會越來越盛行。如今網絡上的各種數據篩選和文本定位及分析工具會為未來的爬蟲奠定基調。這種基調的奠定,可能會促使傳統搜索引擎的改革,而這種改革,將會成為一次重大意義的蛻變,對用戶來說,也是具有促進意義的。本課題主要研究scrapy分布式爬蟲框架的搭建和 在scrapy框架下設計與實現網絡爬蟲,實現在終端控制、后臺自動運行的爬蟲程序[4]。3 爬蟲發展需求分析
網絡爬蟲其實就是一個專門從互聯網上下載網頁并分析網頁的自動化程序。它將下載的網頁內容和采集到的數據儲存在數據庫中。伴隨著起始url的抓取又不斷從抓取到的網頁中抽取新的url 放入到待抓取url 隊列中,直到爬蟲程序所抓取的數去能夠滿足用戶的精確需求,這是搜索程序的重要組成部分[6]。
(1)網頁下載功能
1)下載任何能滿足http協議和https協議的網頁。
2)HTTP響應中構造GET請求。
3)HTTP響應請求分析。
(2)網頁分析功能
1)網頁標題提取。
2)網頁關鍵字提取。
3)網頁摘要提取。
4)網頁鏈接并統計數量提取。
5)將新url 加入待爬取URL隊列。
(3)內存池功能
1)固定大小內存分配。
2)內存對象回收。
3)內存對象釋放。
4)內存池銷毀。
(4)保存功能
1)能夠正確將網頁內容以及數據保存到數據庫中。
2)將程序運行時的異常寫入日志文件。
4 通用爬蟲和聚焦爬蟲
結合使用場景的不同,網絡爬蟲有通用爬蟲與聚焦爬蟲兩種。
百度、谷歌、雅虎等傳統的大型搜索引擎的基本原理就是通用網絡爬蟲的基本原理,將萬維網上的網頁采集到本地時它的主要目的,這樣可以創造一個互聯網網頁內容的鏡像備份。
通用網絡爬蟲從互聯網中搜集網頁,采集信息,這些網頁信息用于為搜索引擎建立索引從而提供支持,它決定著整個引擎系統的內容是否豐富,信息是否即時。