国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的網(wǎng)絡爬蟲技術

2018-04-16 07:11遼寧師范大學計算機與信息技術學院
電子世界 2018年16期
關鍵詞:爬蟲隊列網(wǎng)頁

遼寧師范大學計算機與信息技術學院 陳 樂

1 引言

當今時代是大數(shù)據(jù)的時代,各個領域都離不開數(shù)據(jù)的支持??焖偎阉鲾?shù)據(jù)并且充分利用數(shù)據(jù)信息,成為了一個巨大的挑戰(zhàn)。為了解決這些難題,網(wǎng)絡爬蟲技術應運而生。使用網(wǎng)絡爬蟲技術可以快速提取數(shù)據(jù),提高數(shù)據(jù)檢索質(zhì)量。

2 網(wǎng)絡爬蟲技術

2.1 網(wǎng)絡爬蟲技術的基本概念

網(wǎng)絡爬蟲又稱網(wǎng)絡蜘蛛,或者網(wǎng)絡機器人。它是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。[1]換句話來說,它可以根據(jù)網(wǎng)頁的鏈接地址自動獲取網(wǎng)頁內(nèi)容。如果把互聯(lián)網(wǎng)比做一個大蜘蛛網(wǎng),它里面有許許多多的網(wǎng)頁,網(wǎng)絡蜘蛛可以獲取所有網(wǎng)頁的內(nèi)容。

2.2 網(wǎng)絡爬蟲架構(gòu)

網(wǎng)絡爬蟲架構(gòu)主要由三個部分組成:網(wǎng)絡爬蟲調(diào)度端(負責開啟網(wǎng)絡爬蟲主程序);網(wǎng)絡爬蟲主程序;目標數(shù)據(jù)(抓取有價值數(shù)據(jù))。

網(wǎng)絡爬蟲主程序分為3個部分:

(1)Url管理器:管理Url,包括已經(jīng)爬取過的Url和待爬的Url。

(2)網(wǎng)頁下載器:根據(jù)Url地址,將網(wǎng)頁下載保存到本地,存儲為字符串。

(3)網(wǎng)頁解析器:將存儲的字符串中有價值的數(shù)據(jù)進行解析。

2.3 網(wǎng)絡爬蟲架構(gòu)流程

爬蟲系統(tǒng)調(diào)度段詢問Url管理器,從一個Url或者多個Url開始,將他們放在“待抓取”的Url隊列中,系統(tǒng)按照一定的順序從隊列中取出Url地址,將其傳送給網(wǎng)頁下載器并下載網(wǎng)頁內(nèi)容,調(diào)度端接收到網(wǎng)頁下載的內(nèi)容后,將網(wǎng)頁內(nèi)容發(fā)送給網(wǎng)頁解析器,抓取想要的內(nèi)容。[2]在抓取的過程中,爬蟲還會碰到Url,在已經(jīng)下載的Url隊列中檢查,如果沒有被抓取過,確認是新的Url,則放到Url隊列末尾,等待抓取。上面過程是循環(huán)往復進行的,直到“待抓取”的Url隊列為空,停止抓取。

3 基于Python的網(wǎng)絡爬蟲分析

3.1 Python語言的優(yōu)越性

(1)方便簡單,容易上手。Python幾乎能在所有的操作系統(tǒng)上運行,很容易上手,初學者可以快速適應。

(2)Python是一個廣泛使用的腳本語言,其自帶了urllib、urllib2等爬蟲最基本的庫,可以抓取Url的內(nèi)容。[3]

(3)Python擅長處理字節(jié)流的各種模式,具有很好的開發(fā)速度。

3.2 Python網(wǎng)絡爬蟲模塊

3.2.1 Url管理模塊

Url管理模塊的作用是管理Url,包括已經(jīng)被抓取的Url集合和還未被抓取的Url集合。Url管理模塊可以有效預防重復抓取循環(huán)抓取的問題。

Python中實現(xiàn)網(wǎng)址管理有三種途徑:

(1)存儲在內(nèi)存中,針對于Url數(shù)據(jù)較少的情況。在Python中用Set()集合加以實現(xiàn),Set()可以消除重復數(shù)據(jù),避免重復抓取的問題。

(2)存儲在關系數(shù)據(jù)庫,實現(xiàn)永久存儲。建立Url表,該表中有兩個字段,一個字段是Url地址,另一個字段用來表示Url是否被抓取。

(3)存儲在緩存數(shù)據(jù)庫redis中,針對于Url數(shù)據(jù)較多的情況下。也可以用Set()集合來實現(xiàn),來存取“待爬”的Url地址和“已爬”的Url地址。

3.2.2 網(wǎng)頁下載器

網(wǎng)頁下載器將Url對應的網(wǎng)頁下載到本地,將其存儲為字符串,以便接下來對數(shù)據(jù)進行處理。

Python支持的網(wǎng)頁下載工具有兩種:

Python自身攜帶的urllib2模塊。urllib2針對于簡單的網(wǎng)絡爬蟲,能夠完成網(wǎng)頁下載,提交用戶數(shù)據(jù),代理訪問,客戶登錄等多種功能。

下面是簡單的網(wǎng)絡爬蟲代碼(以百度為例):

import urllib2

response.urllib2.urlopen(“http://www.baidu.com”)

print response.read()

在這個例子中,我們首先調(diào)入urllib2庫中的url.open()方法,傳送百度的url,返回一個response對象,調(diào)入response對象的read()方法,返回獲取的網(wǎng)頁內(nèi)容,并打印.。

第三方工具包—request,request的功能比較強大,屬于第三方插件。

3.2.3 網(wǎng)頁解析器

網(wǎng)頁解析器用來從網(wǎng)頁中提取從最初想要的數(shù)據(jù)。實則上提取的是兩部分:(1)Url列表;(2)目標數(shù)據(jù)。

Python中的網(wǎng)頁解析器有兩種類型:

(1)利用正則表達式。正則表達式將網(wǎng)頁當作字符串來處理,只適用于簡單的網(wǎng)頁。一般網(wǎng)頁較為復雜時,不采用此類方法。

(2)基于網(wǎng)頁的DOM結(jié)構(gòu)。DOM樹是一種樹形標簽結(jié)構(gòu)。網(wǎng)頁解析器會將HTML文檔當成DOM樹,對其進行上下級結(jié)構(gòu)的遍歷來提取有用信息。使用樹形結(jié)構(gòu)可以對網(wǎng)頁中的具體信息來進行定位,定位到具體的某個節(jié)點、屬性等。其中BeautifulSoup解析器功能強大,更為盛行。BeautifulSoup利用find_all()和find()方法來搜索節(jié)點,find_all()可以查找所有符合查詢條件的標簽節(jié)點,并返回一個列表。find()方法查找符合查詢條件的第一個標簽節(jié)點。用這兩種方法搜索節(jié)點,提取有價值信息。

4 結(jié)語

在大數(shù)據(jù)時代,網(wǎng)絡爬蟲技術可以有效準確地抓取目標數(shù)據(jù),可以為我們節(jié)省大量的資源,對信息檢索起著十分重要的作用?;赑ython的網(wǎng)絡爬蟲技術,具有很高的前瞻性,有一定的研究價值。

猜你喜歡
爬蟲隊列網(wǎng)頁
利用網(wǎng)絡爬蟲技術驗證房地產(chǎn)灰犀牛之說
基于Python的網(wǎng)絡爬蟲和反爬蟲技術研究
隊列里的小秘密
基于多隊列切換的SDN擁塞控制*
在隊列里
基于CSS的網(wǎng)頁導航欄的設計
豐田加速駛?cè)胱詣玉{駛隊列
基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡爬蟲技術
網(wǎng)頁制作在英語教學中的應用
禄劝| 泾源县| 陆川县| 常州市| 诏安县| 汝南县| 嘉兴市| 繁峙县| 沙雅县| 五华县| 当涂县| 佛学| 平潭县| 西乌| 淳安县| 元阳县| 峨山| 屯留县| 乳山市| 加查县| 宽城| 育儿| 乐都县| 花莲市| 乌鲁木齐县| 三台县| 永胜县| 犍为县| 清新县| 张家界市| 灌阳县| 揭阳市| 磐石市| 永昌县| 自贡市| 淮安市| 同德县| 万安县| 深水埗区| 龙江县| 黑河市|