999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的新浪新聞爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2018-12-31 00:00:00陳猛
現(xiàn)代信息科技 2018年7期

摘 要:網(wǎng)絡(luò)爬蟲(chóng)屬于網(wǎng)絡(luò)機(jī)器人,也被稱為網(wǎng)頁(yè)蜘蛛。隨著科學(xué)技術(shù)在人們生活中的不斷滲透,對(duì)計(jì)算機(jī)的依賴程度逐漸提升,搜索引擎也變得更加重要,但是以往傳統(tǒng)的搜索引擎已經(jīng)難以滿足現(xiàn)代化需求。對(duì)此,本文在Python的基礎(chǔ)上研究出了一種新型的網(wǎng)絡(luò)爬蟲(chóng),它能夠很好地克服傳統(tǒng)引擎中存在的弊端,為人們提供更多、更全面的搜索內(nèi)容。基于此,本文將以新浪新聞為例,對(duì)Python爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行分析。

關(guān)鍵詞:Python;新浪新聞;爬蟲(chóng)系統(tǒng)

中圖分類號(hào):TP391.1;TP393.092 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2018)07-0111-02

Abstract:The network crawler belongs to the network robot,also known as the web spider. With the continuous infiltration of science and technology in human life,the dependence degree of the computer is increasing gradually,and the search engine is becoming more important. But the traditional search engine has been difficult to meet the needs of modernization. Based on Python,a new type of web crawler is developed. It can overcome the drawbacks in the traditional engine and provide more comprehensive search content for people. Based on this,this article will take Sina News as an example to analyze the design and implementation of Python crawler system.

Keywords:Python;Sina News;crawler system

0 引 言

在以往使用傳統(tǒng)搜索引擎的過(guò)程中,通常會(huì)存在一些不需要的信息,這些信息使人們對(duì)所需信息的獲取受到阻礙,展現(xiàn)出搜索引擎的弊端。在網(wǎng)絡(luò)技術(shù)不斷發(fā)展的背景下,傳統(tǒng)搜索引擎將會(huì)浪費(fèi)很多時(shí)間,不利于搜索效率的提升。而Python基礎(chǔ)上的爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),將使信息的搜索效率得到顯著提升,目前在新浪新聞中得到廣泛應(yīng)用。

1 Python爬蟲(chóng)系統(tǒng)設(shè)計(jì)

網(wǎng)絡(luò)爬蟲(chóng)主要是借助每個(gè)網(wǎng)頁(yè)的網(wǎng)址對(duì)相關(guān)內(nèi)容進(jìn)行篩選后,將最終結(jié)果呈現(xiàn)在用戶面前,而不是單純地通過(guò)人工瀏覽的方式獲取所需信息。Python屬于腳本語(yǔ)言的一種,具有urllib、urllib2相關(guān)爬蟲(chóng)基礎(chǔ)庫(kù)。在Python語(yǔ)言基礎(chǔ)上開(kāi)發(fā)一款軟件,名為Scrapy,它能夠適用于Windows、Linux等多種系統(tǒng)。如若獲取到的網(wǎng)頁(yè)中存在大量的HTML代碼,則在以往的搜索引擎中需要下載許多內(nèi)容,使用Python爬蟲(chóng)系統(tǒng)就無(wú)需太多操作,秩序制定一部分模塊,便能夠?qū)崿F(xiàn)爬蟲(chóng)的功能。

2 Python爬蟲(chóng)系統(tǒng)的設(shè)計(jì)

2.1 設(shè)計(jì)需求

在對(duì)網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)進(jìn)行開(kāi)發(fā)的過(guò)程中,首先需要解決的基礎(chǔ)性問(wèn)題是系統(tǒng)分析,將與系統(tǒng)設(shè)計(jì)相符合的代碼與功能篩選出來(lái),以此促進(jìn)爬蟲(chóng)系統(tǒng)的開(kāi)發(fā)力度,使開(kāi)發(fā)結(jié)果能夠與系統(tǒng)的真實(shí)需求相符合。在爬蟲(chóng)系統(tǒng)中主要采用模塊化的設(shè)計(jì)方式,各個(gè)功能具有自己獨(dú)立的建設(shè)模塊,這為后續(xù)的代碼維護(hù)提供了極大的便利,可以使代碼的作用得到充分發(fā)揮。對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō),需要將各個(gè)模塊進(jìn)行編制以后來(lái)實(shí)現(xiàn)整個(gè)系統(tǒng)功能。在新浪所使用的爬蟲(chóng)系統(tǒng)中,主要是按照用戶的某些上網(wǎng)習(xí)慣進(jìn)行專業(yè)化的網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì),使系統(tǒng)中的各項(xiàng)功能均能夠得以明確。同時(shí),在系統(tǒng)設(shè)計(jì)的過(guò)程中,還應(yīng)為后續(xù)的系統(tǒng)更新與維修等做好準(zhǔn)備[1]。

2.2 功能設(shè)計(jì)

2.2.1 網(wǎng)址管理器

網(wǎng)址管理器的設(shè)計(jì)主要分為三種類型:一是采用內(nèi)存存儲(chǔ)網(wǎng)址,這種主要適用于數(shù)據(jù)量較少的情況。將網(wǎng)址儲(chǔ)存到兩個(gè)集合當(dāng)中,一個(gè)集合代表待爬集合,另一個(gè)集合代表已爬集合,然后在Python的基礎(chǔ)上,利用Set()來(lái)實(shí)現(xiàn)系統(tǒng)的功能設(shè)計(jì),并且Set()自身具有較強(qiáng)的清除功能,能夠?qū)⑾到y(tǒng)中的重復(fù)值全部清除;二是采用關(guān)系數(shù)據(jù)庫(kù),這種適用于對(duì)數(shù)據(jù)進(jìn)行長(zhǎng)久存儲(chǔ)的情況。例如,建立表格,用兩個(gè)字段分別代表已爬網(wǎng)址與待爬網(wǎng)址;三是將網(wǎng)址存儲(chǔ)到緩存數(shù)據(jù)庫(kù)當(dāng)中,這種更適合于數(shù)據(jù)量較大的情況。

2.2.2 網(wǎng)頁(yè)下載器

它是整個(gè)爬蟲(chóng)系統(tǒng)中最重要的模塊,網(wǎng)頁(yè)中展示的內(nèi)容通常為HTML格式,現(xiàn)階段在Python中支持兩種網(wǎng)頁(yè)下載格式,一種為Python官方的基礎(chǔ)模塊lib2包,另一種為request第三方工具包,它在功能方面具有十分顯著的優(yōu)勢(shì)。

2.2.3 網(wǎng)頁(yè)解析器

它的主要作用是對(duì)網(wǎng)頁(yè)中的內(nèi)容和數(shù)據(jù)進(jìn)行解剖與分析。在Python基礎(chǔ)上的網(wǎng)頁(yè)解析器主要分為兩種,一種采用正則表達(dá)式的方式將整個(gè)文檔看作字符串,利用模糊匹配的方式將數(shù)據(jù)價(jià)值提取出來(lái),這種方式雖然較為直觀,但是對(duì)于復(fù)雜度較強(qiáng)的文檔來(lái)說(shuō),這種方式的操作難度較大,如若其中某個(gè)正則匹配有誤差,則會(huì)導(dǎo)致該程序長(zhǎng)期處于循環(huán)當(dāng)中;第二種是按照HTML網(wǎng)頁(yè)建立一個(gè)DOM樹(shù),通過(guò)樹(shù)的模式對(duì)各個(gè)節(jié)點(diǎn)進(jìn)行搜索,按照樹(shù)形的上下結(jié)構(gòu),能夠很容易地找出各個(gè)元素所在的位置。

2.2.4 數(shù)據(jù)導(dǎo)出

采用Python能夠?qū)?shù)據(jù)導(dǎo)出,并且格式主要為CSV格式,同時(shí)也支持其他格式的文件。在導(dǎo)出的過(guò)程中應(yīng)注意數(shù)據(jù)編碼的問(wèn)題,避免導(dǎo)出文件出現(xiàn)亂碼現(xiàn)象。

3 Python爬蟲(chóng)系統(tǒng)的實(shí)現(xiàn)

在Python基礎(chǔ)上進(jìn)行爬蟲(chóng)系統(tǒng)設(shè)計(jì)后,對(duì)系統(tǒng)的實(shí)現(xiàn)進(jìn)行檢驗(yàn)。本文主要以新浪新聞為例,首先利用爬蟲(chóng)獲取相關(guān)新聞的網(wǎng)址鏈接,然后根據(jù)網(wǎng)址對(duì)目標(biāo)新聞信息進(jìn)行解析,最后將其存儲(chǔ)到相應(yīng)的文件當(dāng)中,具體的系統(tǒng)實(shí)現(xiàn)過(guò)程如下所述。

3.1 獲取所需新聞

要對(duì)全部新浪新聞URL進(jìn)行獲取,首先需要找到與URL相關(guān)的入口。例如,新浪新聞網(wǎng),它的入口網(wǎng)址為:http://news.sina.com.cn/,進(jìn)入網(wǎng)頁(yè)以后能夠看到滾動(dòng)、直播、國(guó)內(nèi)、社會(huì)、軍事、政務(wù)等十余個(gè)欄目,比如在“軍事”處進(jìn)行抓取便能夠看到最新的軍事熱點(diǎn)新聞,在下一個(gè)子欄目中進(jìn)行點(diǎn)擊,便是將上下軍事新聞進(jìn)行鏈接,將新聞的序號(hào)填寫上去,如0、15、30等,每次遞增15個(gè),然后對(duì)序號(hào)進(jìn)行調(diào)整,能夠?qū)崿F(xiàn)對(duì)下一個(gè)頁(yè)面的展示。舉例說(shuō)明,以start=0代表第一個(gè)頁(yè)面,以start=15代表第二個(gè)頁(yè)面,以此類推,序號(hào)每次增加15。以此來(lái)獲取更多不同類型的新聞信息[2]。

對(duì)新浪新聞URL中爬蟲(chóng)進(jìn)行獲取的方式有兩種,一種為spiederUtil,另一種為doubanSpider。其中后者的獲取流程為:首先在main函數(shù)中構(gòu)建一個(gè)對(duì)象,命名為douban Spider,將該對(duì)象與getcontents函數(shù)相結(jié)合,抓取到新聞列表當(dāng)中全部的URL源代碼;然后使用spiderUtil類對(duì)文件進(jìn)行存儲(chǔ);最后,利用readALL函數(shù)對(duì)獲取到的文件進(jìn)行預(yù)覽,并且使用parse Web函數(shù)對(duì)源代碼進(jìn)行解析,使其成為新聞數(shù)據(jù),通過(guò)spiderUtil類中的save方式對(duì)這些新聞信息進(jìn)行存儲(chǔ)。

3.2 解析新聞信息

由于新浪新聞的內(nèi)容定期更新,要想減少對(duì)服務(wù)器資源的利用,則需要在新聞界面功能中將爬蟲(chóng)更新時(shí)間定為每小時(shí)一次。在新聞界面中,將當(dāng)天的熱點(diǎn)新聞、最新新聞顯示在突出位置,并且點(diǎn)擊新浪新聞的標(biāo)題,便能夠進(jìn)入到網(wǎng)站當(dāng)中,對(duì)新聞信息進(jìn)行詳細(xì)地了解與解析。

首先,對(duì)items.py文件進(jìn)行修正。items.py文件與TutoralItem類相對(duì)應(yīng),利用其將scrapy中的Item類與Field類反映出來(lái),最終對(duì)新浪新聞進(jìn)行定義;其次,對(duì)Pipelines.py文件進(jìn)行修正,主要是對(duì)管道文件進(jìn)行處理,將Spider.py文件進(jìn)行二次編寫,在具體的文件中,該文件作為爬蟲(chóng)主體存在;最后,對(duì)settings.py配置文件進(jìn)行修正,對(duì)于部分具有防止爬蟲(chóng)機(jī)制的網(wǎng)頁(yè)來(lái)說(shuō),需要對(duì)其屬性進(jìn)行相應(yīng)的調(diào)整,使新浪新聞信息順利科學(xué)地得到解析[3]。

4 結(jié) 論

綜上所述,隨著科學(xué)技術(shù)的不斷發(fā)展,以往傳統(tǒng)的搜索引擎已經(jīng)難以充分滿足當(dāng)前的信息獲取需求,而爬蟲(chóng)技術(shù)的應(yīng)用有效地克服了傳統(tǒng)引擎的弊端,具有較大的應(yīng)用價(jià)值,能夠通過(guò)數(shù)據(jù)抓取挖掘出更多潛在的有用信息。同時(shí),Python語(yǔ)言功能十分強(qiáng)大,支持多種軟件工具形式,在此基礎(chǔ)上將爬蟲(chóng)系統(tǒng)應(yīng)用到新浪新聞中,能夠?yàn)閃eb數(shù)據(jù)信息的抓取提供極大的幫助,促進(jìn)該網(wǎng)站的健康高效運(yùn)行。

參考文獻(xiàn):

[1] 趙鵬程.分布式書(shū)籍網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].成都:西南交通大學(xué),2014.

[2] 呂陽(yáng).分布式網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].成都:電子科技大學(xué),2013.

[3] 郝以珍.基于頁(yè)面分析的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].武漢:華中科技大學(xué),2012.

作者簡(jiǎn)介:陳猛(1991.03-),男,漢族,江蘇揚(yáng)州人,碩士在讀。研究方向:計(jì)算機(jī)技術(shù)。

主站蜘蛛池模板: 色男人的天堂久久综合| 男人天堂伊人网| 午夜视频免费一区二区在线看| 国产在线97| 天天爽免费视频| 中文字幕在线日韩91| 91综合色区亚洲熟妇p| 国产精品入口麻豆| 色综合婷婷| 激情五月婷婷综合网| 免费中文字幕在在线不卡| 性喷潮久久久久久久久| 97超碰精品成人国产| 伊人久综合| 亚洲国产中文在线二区三区免| 国产全黄a一级毛片| 国产人碰人摸人爱免费视频| 欧美成人影院亚洲综合图| 国产99免费视频| 国产一区二区福利| 中文纯内无码H| 亚洲黄网在线| 亚洲一区二区三区在线视频| 国产AV无码专区亚洲精品网站| 亚洲成aⅴ人在线观看| 先锋资源久久| 成人综合网址| 亚洲精品国产首次亮相| 天天做天天爱夜夜爽毛片毛片| 国产69囗曝护士吞精在线视频| 国产成人你懂的在线观看| 98超碰在线观看| 91日本在线观看亚洲精品| 97国内精品久久久久不卡| 狠狠亚洲五月天| 91毛片网| 午夜欧美在线| 伦伦影院精品一区| 国产精品手机视频一区二区| 国产一级在线播放| 亚洲欧州色色免费AV| 日韩无码视频专区| 中文字幕 欧美日韩| 亚洲日本中文字幕乱码中文| 国产精品流白浆在线观看| 国产精品手机在线播放| 成人一区在线| 无码区日韩专区免费系列| 黄色在线不卡| 中文字幕日韩欧美| 片在线无码观看| 美女扒开下面流白浆在线试听 | 亚洲中文无码h在线观看 | 国产无遮挡猛进猛出免费软件| 狠狠色噜噜狠狠狠狠色综合久| 国产成人a毛片在线| 久久久亚洲国产美女国产盗摄| 国产精品性| 亚洲床戏一区| 制服丝袜国产精品| 国产毛片片精品天天看视频| 欧美福利在线播放| 99热国产在线精品99| 在线免费亚洲无码视频| 国产老女人精品免费视频| 国产手机在线小视频免费观看| 在线国产综合一区二区三区 | 手机精品视频在线观看免费| 亚洲天堂视频网站| 成年网址网站在线观看| 亚洲一欧洲中文字幕在线| 亚洲日韩在线满18点击进入| 大香网伊人久久综合网2020| 亚洲精品国产自在现线最新| 日韩精品无码免费一区二区三区 | 特级aaaaaaaaa毛片免费视频| 国产亚洲精| 亚洲国产精品日韩欧美一区| 亚洲天堂视频在线观看免费| 国产在线拍偷自揄观看视频网站| 国产婬乱a一级毛片多女| 久久久久无码精品|