• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2018-02-25 06:21:08于韜李偉代麗偉
    電子技術(shù)與軟件工程 2018年9期
    關(guān)鍵詞:爬蟲大數(shù)據(jù)

    于韜 李偉 代麗偉

    摘要 隨著大數(shù)據(jù)時(shí)代的到來(lái),數(shù)據(jù)量呈幾何倍增長(zhǎng)。以新浪新聞為代表的一系列新聞檢索網(wǎng)站蘊(yùn)含著大量的數(shù)據(jù)資源。本文以新浪新聞為研究對(duì)象,利用Python爬蟲技術(shù)實(shí)現(xiàn)網(wǎng)頁(yè)下載與網(wǎng)頁(yè)解析,完成了對(duì)目標(biāo)數(shù)據(jù)的高效獲取,并將獲取的信息進(jìn)行格式化存儲(chǔ)。實(shí)驗(yàn)結(jié)果表明,本文所提出的程序?qū)崿F(xiàn)了網(wǎng)頁(yè)數(shù)據(jù)的快速獲取,為后續(xù)的數(shù)據(jù)挖掘提供支持。

    【關(guān)鍵詞】大數(shù)據(jù) Python 爬蟲 新浪新聞

    1 引言

    新浪新聞?dòng)尚吕斯俜匠銎?,及時(shí)發(fā)布全球新聞資訊,國(guó)內(nèi)國(guó)外要聞,精彩的體育賽事報(bào)道,金融財(cái)經(jīng)動(dòng)向,影視娛樂(lè)事件,還有獨(dú)家微博“微”新聞,精彩隨你看,新聞、星座、笑話一個(gè)都不少。新聞是我們生活中的一部分,通過(guò)新浪的新聞板塊可以坐在家里看世界。如此多的新聞信息,其中蘊(yùn)含的巨大信息量是不言而喻的,因此如何獲取是十分關(guān)鍵的。本文我們將通過(guò)爬蟲技術(shù)獲取相關(guān)新聞信息。

    Python作為一種語(yǔ)法簡(jiǎn)潔的程序設(shè)計(jì)語(yǔ)言,對(duì)于爬蟲開(kāi)發(fā)上有很多優(yōu)勢(shì),在發(fā)送HTTP請(qǐng)求時(shí),Python提供優(yōu)秀的第三方包譬如Requests,極大簡(jiǎn)化了對(duì)網(wǎng)站的訪問(wèn)請(qǐng)求。在解析HTML源碼時(shí),提供的BeautifuISoup庫(kù)能用極簡(jiǎn)短的代碼完成過(guò)濾html標(biāo)簽并提取文本的工作。利用Python中的pandas可以對(duì)獲取到的數(shù)據(jù)進(jìn)行整理、儲(chǔ)存。對(duì)于網(wǎng)站的反爬機(jī)制,Python提供了更為簡(jiǎn)便的解決方案,可以使用Requests庫(kù)得到一個(gè)代理IP。Python擁有足夠多的簡(jiǎn)潔的語(yǔ)法和庫(kù)的支持,使得它在爬蟲開(kāi)發(fā)上具有很高的效率。

    本文提出的爬蟲程序通過(guò)獲取相關(guān)新聞信息,并將數(shù)據(jù)保存到本地,方便對(duì)數(shù)據(jù)的挖掘與分析。使用本程序可以節(jié)省獲取數(shù)據(jù)的時(shí)間,使用戶可以將更多精力放在數(shù)據(jù)分析上面。

    2 基于Python的新浪新聞爬蟲設(shè)計(jì)

    2.1 爬蟲系統(tǒng)設(shè)計(jì)需求

    設(shè)計(jì)爬蟲系統(tǒng)需要解決以下幾個(gè)問(wèn)題:

    (1)評(píng)論數(shù)的獲取:通過(guò)頁(yè)面鏈接獲取新聞id,然后傳遞獲取評(píng)論數(shù)。

    (2)頁(yè)面信息的提?。喉?yè)面上有我們需要的標(biāo)題、作者、摘要等信息。

    (3)分頁(yè)鏈接的獲取:獲取不同分頁(yè)的鏈接,以便獲取更多頁(yè)面信息。

    (4)網(wǎng)頁(yè)內(nèi)容的分析和管理:提取網(wǎng)頁(yè)信息,并將其存入數(shù)據(jù)庫(kù)或其他數(shù)據(jù)文件中。

    2.2 與爬蟲相關(guān)的python模塊

    2.2.1 網(wǎng)址管理器

    實(shí)現(xiàn)網(wǎng)址管理的方法有以下3類:

    (1) Python內(nèi)存儲(chǔ)存:適合存儲(chǔ)少量信息,將網(wǎng)址在儲(chǔ)存時(shí)分為兩類:已爬取和待爬取,放入兩個(gè)集合中進(jìn)行管理。

    (2)關(guān)系數(shù)據(jù)庫(kù)儲(chǔ)存:適合網(wǎng)址信息進(jìn)行永久性儲(chǔ)存,可以存到表中,建立兩個(gè)字段用來(lái)辨別是否爬取。

    (3)緩存數(shù)據(jù)庫(kù)儲(chǔ)存:適合儲(chǔ)存大量的網(wǎng)址信息

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

    網(wǎng)頁(yè)下載器是爬蟲程序的主要核心模塊。網(wǎng)頁(yè)的內(nèi)容一般是HTML格式,Python支持的網(wǎng)頁(yè)下載工具有兩類:

    (1) Python官方支持的基礎(chǔ)模塊中的urllib包

    (2) requests第三方工具包,功能強(qiáng)大。

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

    網(wǎng)頁(yè)解析器是對(duì)網(wǎng)頁(yè)內(nèi)容中進(jìn)行數(shù)據(jù)解析的工具。Python支持的網(wǎng)頁(yè)解析器有兩種:一種利用正則表達(dá)式可以將整個(gè)網(wǎng)頁(yè)文檔當(dāng)成一個(gè)字符串,使用模糊匹配的方式來(lái)提取出有價(jià)值的數(shù)據(jù);另一種是根據(jù)Html網(wǎng)頁(yè)創(chuàng)建成一個(gè)DOM樹,以樹的形式進(jìn)行各種節(jié)點(diǎn)的搜索遍歷。DOM的樹形結(jié)構(gòu)根據(jù)上下級(jí)關(guān)系,可以很方便的定位到各個(gè)元素。

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

    利用Python可以將數(shù)據(jù)導(dǎo)出為Excel格式或其它格式文件。導(dǎo)出數(shù)據(jù)時(shí)應(yīng)注意數(shù)據(jù)編碼問(wèn)題,否則導(dǎo)出的文件可能會(huì)出現(xiàn)亂碼。如圖1所示。

    3 實(shí)驗(yàn)設(shè)計(jì)

    我們通過(guò)新浪新聞API: http://news.smacom.cn/china/進(jìn)行抓取。爬蟲代碼由3個(gè)功能函數(shù)和一個(gè)主函數(shù)構(gòu)成:

    3.1 獲取詳細(xì)頁(yè)面內(nèi)文函數(shù)( getNews Detail)

    首先對(duì)詳細(xì)頁(yè)面的鏈接進(jìn)行下載:通過(guò)requests方法下載html文檔,接著通過(guò)BeautifulSoup進(jìn)行解析。然后通過(guò)select方法獲取文章標(biāo)題、來(lái)源以及編輯信息,由于時(shí)間的格式的特殊性,利用datatime獲取新聞發(fā)表的時(shí)間。對(duì)于新聞主體,通過(guò)for依次取段落,再通過(guò)jom方法將所有段落信息整合在一起。取評(píng)論數(shù)我們通過(guò)getCommentCounts方法進(jìn)行獲取。最后定義一個(gè)字典,將頁(yè)面的標(biāo)題、來(lái)源、時(shí)間等信息存儲(chǔ)到字典中。

    3.2 獲取評(píng)論數(shù)函數(shù)( getCommentCounts)

    由于通過(guò)直接觀察元素信息時(shí)找不到評(píng)論數(shù)信息,可能是通過(guò)JS方式添加上去的,因此需要對(duì)評(píng)論數(shù)鏈接進(jìn)行處理,而評(píng)論數(shù)鏈接與新聞id有關(guān),因此我們首先對(duì)新聞id進(jìn)行獲取。通過(guò)正則表達(dá)式獲取新聞id,在將新聞id放入評(píng)論數(shù)鏈接中,對(duì)此鏈接進(jìn)行解析,即可得到相應(yīng)的評(píng)論數(shù)。

    3.3 剖析清單鏈接函數(shù)( parseListLinks)

    在前兩個(gè)函數(shù)中我們已經(jīng)獲取到了頁(yè)面的詳細(xì)信息,利用parseListLinks函數(shù),我們獲取不同清單的鏈接,并結(jié)合getNewsDetail函數(shù)獲取清單上所有新聞信息。接著定義一個(gè)列表newsdetails,并將getNewsDetail函數(shù)獲取的信息儲(chǔ)存在列表中。

    3.4 主函數(shù)

    在主函數(shù)中可以自定義想要獲取的新聞頁(yè)數(shù)。由于每個(gè)清單有許多數(shù)據(jù)頁(yè),我們加了一個(gè)for循環(huán)獲得分頁(yè)鏈接,通過(guò)parseListLinks方法依次獲取新聞信息,我們利用pandas中DataFrame方法對(duì)數(shù)據(jù)進(jìn)行整理,最后用to excel方法將數(shù)據(jù)保存為Excel格式。

    爬取流程圖如圖2所示。

    4 實(shí)驗(yàn)結(jié)果

    通過(guò)實(shí)驗(yàn)獲取新浪新聞的論文信息,運(yùn)行結(jié)果如圖3所示,實(shí)驗(yàn)采集了7500條信息,為后期的數(shù)據(jù)處理提供了有力支撐。

    5 結(jié)語(yǔ)

    文章分析了新浪爬蟲獲取數(shù)據(jù)時(shí)的細(xì)節(jié)實(shí)現(xiàn),對(duì)國(guó)內(nèi)新聞API進(jìn)行爬取,使用requests方法下載網(wǎng)頁(yè)html文檔,并用BeautifulSoup進(jìn)行解析,進(jìn)而獲得相關(guān)的數(shù)據(jù)信息。總體來(lái)說(shuō),爬蟲技術(shù)具有較高的應(yīng)用價(jià)值與無(wú)限的潛在價(jià)值,通過(guò)抓取數(shù)據(jù),可以挖掘出更有價(jià)值的信息。

    參考文獻(xiàn)

    [1]魏冬梅,何忠秀等,基于Python的Web信息獲取方法研究[J].軟件導(dǎo)刊,2018(01).

    [2]孫立偉,何國(guó)輝等,網(wǎng)絡(luò)爬蟲技術(shù)的研究[J].電腦知識(shí)與技術(shù),2010 (05).

    [3]周中華,張惠,然謝江,基于Python的新浪微博數(shù)據(jù)爬蟲[J].計(jì)算機(jī)應(yīng)用2014 (11).

    [4]張明杰,基于網(wǎng)絡(luò)爬蟲技術(shù)的輿情數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J],現(xiàn)代計(jì)算機(jī)(專業(yè)版)2015 (06).

    [5]朱燁行,張明杰,微博數(shù)據(jù)采集的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2017 (09).

    猜你喜歡
    爬蟲大數(shù)據(jù)
    利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說(shuō)
    基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
    利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
    大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
    電子制作(2017年9期)2017-04-17 03:00:46
    基于大數(shù)據(jù)背景下的智慧城市建設(shè)研究
    科技視界(2016年20期)2016-09-29 10:53:22
    周至县| 渑池县| 托里县| 玛纳斯县| 东源县| 伊宁县| 江山市| 大同市| 新竹县| 浠水县| 十堰市| 云梦县| 老河口市| 荆门市| 祁阳县| 衡南县| 车险| 千阳县| 梁山县| 崇明县| 翁牛特旗| 左云县| 仪陇县| 泸溪县| 江城| 崇左市| 宜春市| 虹口区| 斗六市| 依安县| 罗甸县| 夏津县| 游戏| 高唐县| 德昌县| 玉溪市| 中牟县| 新河县| 昌邑市| 平昌县| 黎平县|