• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Python爬蟲(chóng)技術(shù)的網(wǎng)頁(yè)解析與數(shù)據(jù)獲取研究

      2020-04-10 10:58:09溫婭娜袁梓梁何詠宸黃猛
      現(xiàn)代信息科技 2020年1期
      關(guān)鍵詞:網(wǎng)絡(luò)爬蟲(chóng)

      溫婭娜 袁梓梁 何詠宸 黃猛

      摘? 要:網(wǎng)絡(luò)的發(fā)展,大數(shù)據(jù)、人工智能的崛起使數(shù)據(jù)變得尤為重要,各行各業(yè)的發(fā)展都需要數(shù)據(jù)的支持,任何一種深度學(xué)習(xí)以及算法中都需要大量的數(shù)據(jù)作為模型來(lái)訓(xùn)練才能得出較為準(zhǔn)確的結(jié)論。文中討論了網(wǎng)絡(luò)爬蟲(chóng)實(shí)現(xiàn)過(guò)程中的主要問(wèn)題:了解網(wǎng)頁(yè)基本結(jié)構(gòu)、使用直觀的網(wǎng)頁(yè)分析工具對(duì)網(wǎng)頁(yè)進(jìn)行抓包分析、如何使用正則表達(dá)式獲取準(zhǔn)確的字符串信息、利用Python實(shí)現(xiàn)簡(jiǎn)單的頁(yè)面數(shù)據(jù)獲取。

      關(guān)鍵詞:網(wǎng)絡(luò)爬蟲(chóng);Python;正則表達(dá)式;抓包分析

      中圖分類(lèi)號(hào):TP391.3? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)01-0012-03

      Abstract:With the development of network,the rise of big data and artificial intelligence,data becomes more and more important. The development of all walks of life needs the support of data. Any kind of deep learning and algorithm needs a lot of data as a model for training to get a more accurate conclusion. This paper discusses the main problems in the implementation of web crawler:understanding the basic structure of web page,using the intuitive web page analysis tool to analyze the web page,how to use regular expression to obtain accurate string information,and using Python to achieve simple page data acquisition.

      Keywords:web crawler;Python;regular expression;packet capturing analysis

      0? 引? 言

      在網(wǎng)絡(luò)迅速發(fā)展的過(guò)程中,萬(wàn)維網(wǎng)成為大量信息的載體,數(shù)據(jù)獲取的多樣性也使如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn)。而網(wǎng)絡(luò)爬蟲(chóng)是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本,使用網(wǎng)絡(luò)爬蟲(chóng)來(lái)面對(duì)這個(gè)巨大的挑戰(zhàn)是最優(yōu)的,因?yàn)榫W(wǎng)絡(luò)爬蟲(chóng)作為搜索引擎的重要組成部分,在信息檢索過(guò)程中發(fā)揮著重要的作用,對(duì)于網(wǎng)絡(luò)爬蟲(chóng),Python有很大的優(yōu)勢(shì),在Python中有各種爬蟲(chóng)框架,方便高效地下載網(wǎng)頁(yè),多線(xiàn)程、進(jìn)程模型成熟穩(wěn)定。本文將對(duì)Python爬蟲(chóng)有效提取大量信息的應(yīng)用過(guò)程進(jìn)行詳細(xì)介紹。

      1? 網(wǎng)頁(yè)的基本結(jié)構(gòu)

      要應(yīng)用爬蟲(chóng)技術(shù),首先要看應(yīng)用的領(lǐng)域,本文主要針對(duì)網(wǎng)頁(yè)的結(jié)構(gòu),了解網(wǎng)頁(yè)的結(jié)構(gòu),這些光鮮亮麗的頁(yè)面都是由代碼組成的。這種代碼我們稱(chēng)之為HTML(超文本標(biāo)記語(yǔ)言),HTML是瀏覽器(Chrome、Safari、IE、Firefox等)看得懂的語(yǔ)言。除了HTML,構(gòu)建頁(yè)面還有CSS以及JavaScript。HTML負(fù)責(zé)頁(yè)面的結(jié)構(gòu),CSS負(fù)責(zé)頁(yè)面的樣式,JavaScript負(fù)責(zé)頁(yè)面的動(dòng)態(tài)功能。網(wǎng)頁(yè)有靜態(tài)網(wǎng)頁(yè)和動(dòng)態(tài)網(wǎng)頁(yè)之分,靜態(tài)網(wǎng)頁(yè)并不是沒(méi)有動(dòng)態(tài)效果的頁(yè)面,而是指沒(méi)有后臺(tái)數(shù)據(jù)庫(kù)的不可交互網(wǎng)頁(yè),常以.htm、.html、.xml為后綴;動(dòng)態(tài)網(wǎng)頁(yè)是指能與后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)傳遞的可交互網(wǎng)頁(yè),常以.aspx、.asp、.jsp、.php為后綴。目前很多動(dòng)態(tài)網(wǎng)站都采取了異步加載技術(shù)(Ajax),這就是很多時(shí)候抓取到的源代碼和網(wǎng)站顯示的源代碼不一致的原因。目前有多種技術(shù)和方法可以對(duì)動(dòng)靜態(tài)網(wǎng)頁(yè)中的信息進(jìn)行獲取,本文介紹了抓包分析和正則表達(dá)式兩種方法。下文就介紹一下如何采用抓包分析對(duì)動(dòng)態(tài)網(wǎng)頁(yè)進(jìn)行分析。

      2? Chrome抓包分析

      2.1? 網(wǎng)頁(yè)源代碼分析

      靜態(tài)和動(dòng)態(tài)兩種網(wǎng)頁(yè)的源代碼也是不同的,在分析過(guò)程中我們需要對(duì)這兩種代碼都進(jìn)行分析,其中重要的是對(duì)動(dòng)態(tài)頁(yè)面中的數(shù)據(jù)包抓取分析,本文采用谷歌瀏覽器Chrome開(kāi)發(fā)者工具進(jìn)行抓包分析,具體采用的方法:以京東商品為例分析如何通過(guò)Chrome進(jìn)行抓包。首先打開(kāi)一個(gè)商品的首頁(yè),通常抓取到的源代碼就是網(wǎng)頁(yè)最原始的代碼,來(lái)到網(wǎng)頁(yè)空白處單擊鼠標(biāo)右鍵,選擇查看網(wǎng)頁(yè)源代碼,并且也可以采用右擊鼠標(biāo)方式選擇檢查,這樣就得到了兩種不同的源代碼,對(duì)代碼進(jìn)行對(duì)比分析。而采用右擊鼠標(biāo)方式選擇檢查得到的代碼是經(jīng)過(guò)Ajax加載和JavaScript渲染的源代碼,也就是當(dāng)前網(wǎng)站顯示內(nèi)容的源代碼。對(duì)比過(guò)后會(huì)發(fā)現(xiàn),代碼隨著網(wǎng)頁(yè)的變化而變化,這就是典型的動(dòng)態(tài)網(wǎng)頁(yè)異步加載技術(shù)(Ajax)的例子。

      通過(guò)以上方法,我們了解了動(dòng)態(tài)網(wǎng)頁(yè),下一步就是怎樣獲取動(dòng)態(tài)網(wǎng)頁(yè)中的數(shù)據(jù)包來(lái)爬取動(dòng)態(tài)網(wǎng)頁(yè)中的信息。

      2.2? 網(wǎng)頁(yè)抓包分析

      本文嘗試使用Chrome抓包分析獲取當(dāng)前頁(yè)面商品的價(jià)格數(shù)據(jù)。打開(kāi)瀏覽器中的開(kāi)發(fā)者工具,然后選擇Network選項(xiàng)卡進(jìn)行抓包分析。此時(shí)要按下F5鍵刷新頁(yè)面,才可以看到開(kāi)發(fā)者工具中出現(xiàn)了各種各樣的包,本文只需要JS的數(shù)據(jù)包,所以需要使用Filter對(duì)包進(jìn)行過(guò)濾,經(jīng)過(guò)篩選后即得到返回的商品價(jià)格信息。

      打開(kāi)此包Headers中的URL,里面是商品價(jià)格信息的JSON數(shù)據(jù)呈現(xiàn),當(dāng)前的網(wǎng)站開(kāi)發(fā)大都采用這樣的模式。分析URL的參數(shù),可以推測(cè)出SKUid就是每個(gè)商品主鍵(SKU是一個(gè)在物流、運(yùn)輸?shù)犬a(chǎn)業(yè)中常用的縮寫(xiě),其全稱(chēng)是Stock Keeping Unit(庫(kù)存量單位),即庫(kù)存進(jìn)出計(jì)量的基本單元,現(xiàn)在已經(jīng)被引申為產(chǎn)品統(tǒng)一編號(hào)的簡(jiǎn)稱(chēng),每種產(chǎn)品均對(duì)應(yīng)有唯一的SKU。例如,商品首頁(yè)https://item.jd.com/ 100004286189.html中100004286189就是商品的唯一號(hào)碼標(biāo)識(shí),可以由抓到的價(jià)格數(shù)據(jù)包中的URL的callback前https: //p.3.cn/prices/mgets?后添加SKUid=商品的號(hào)碼標(biāo)識(shí),來(lái)直接打開(kāi)商品的信息從而獲得商品價(jià)格。

      由此得出結(jié)論:通過(guò)泛化后的URL,理論上只要能得到商品的SKUid,我們就可以訪(fǎng)問(wèn)對(duì)應(yīng)商品的信息。

      以上方法可以獲取網(wǎng)頁(yè)中的關(guān)鍵數(shù)據(jù),但是從技術(shù)角度來(lái)說(shuō),對(duì)于大量數(shù)據(jù)的采集本方法不適合,需要采用代碼的方法進(jìn)行,下面將詳細(xì)描述正則。

      3? 正則表達(dá)式獲取字符串信息

      正則表達(dá)式是一組特殊的字符序列,由一些事先定義好的字符以及這些字符的組合形成,常常用于匹配字符串,在Python中,re模塊就是一個(gè)用于處理正則表達(dá)式的模塊。

      給定一個(gè)正則表達(dá)式和另一個(gè)字符串,可以達(dá)到以下兩個(gè)目的:給定的字符串是否符合正則表達(dá)式的過(guò)濾邏輯(稱(chēng)作“匹配”)??梢酝ㄟ^(guò)正則表達(dá)式,從字符串中獲取我們想要的特定部分。正則表達(dá)式對(duì)于剛接觸的人來(lái)說(shuō),比較難一些,但是它可以迅速地用極簡(jiǎn)單的方式表示復(fù)雜的字符串,正則表達(dá)式具有靈活性、邏輯性和功能性非常強(qiáng),常用來(lái)匹配或提取一些特征字符串。Python中處理正則匹配最常見(jiàn)的函數(shù)是match和search函數(shù)分別如下:

      re.match與re.search的區(qū)別:re.match從字符串開(kāi)始起匹配指定正則表達(dá)式,如果字符串開(kāi)始不符合正則表達(dá)式,則匹配失敗,函數(shù)返回None;而re.search從字符串開(kāi)始匹配正則表達(dá)式,直至找到一個(gè)盡可能地匹配成功。接下來(lái)介紹一個(gè)簡(jiǎn)單的使用正則表達(dá)式爬取小說(shuō)的實(shí)例,小說(shuō)數(shù)據(jù)獲取如下。

      (1)抓取網(wǎng)頁(yè)數(shù)據(jù):打開(kāi)某小說(shuō)頁(yè)面,打開(kāi)瀏覽器的開(kāi)發(fā)人員工具,使用Requests庫(kù)獲取章節(jié)和章節(jié)對(duì)應(yīng)的鏈接信息,并使用response.text獲取對(duì)應(yīng)章節(jié)的內(nèi)容。把所有內(nèi)容讀入一個(gè)字符串,采用循環(huán)的方式讀取字符串內(nèi)容,獲取每一個(gè)章節(jié),分別去下載小說(shuō)的內(nèi)容,提取章節(jié)內(nèi)容:

      (2)數(shù)據(jù)清洗及提?。簩?duì)于獲得的頁(yè)面上的原始數(shù)據(jù),但是獲取數(shù)據(jù)本身的格式(其中包含一些標(biāo)簽、字符)等內(nèi)容都不符合規(guī)范,由于不規(guī)范的數(shù)據(jù)和實(shí)際所需要的信息混在一起,因此需要進(jìn)一步清洗、提取才能獲得我們實(shí)際需要的數(shù)據(jù)。所以再次讀取獲得的字符串信息,獲取每一章的信息(包括章節(jié)、url):

      再使用空字符代替空格、P標(biāo)簽等不需要的數(shù)據(jù),對(duì)獲取的數(shù)據(jù)進(jìn)行二次清洗,只保留所需要的小說(shuō)的文字。

      (3)數(shù)據(jù)持久化:把清洗后的數(shù)據(jù)保存到新文件中,以便進(jìn)一步分析。新建一個(gè)文件保存小說(shuō)的內(nèi)容,在源代碼中找到標(biāo)題所在的標(biāo)簽,使用正則表達(dá)式將其匹配為文件的title,并將所需內(nèi)容寫(xiě)入文件中:

      4? 結(jié)? 論

      本文介紹了兩種方法來(lái)進(jìn)行頁(yè)面信息的獲取,使用Chrome抓包分析可以對(duì)動(dòng)態(tài)頁(yè)面的少量信息進(jìn)行獲取,而正則表達(dá)式可以對(duì)頁(yè)面中大量的數(shù)據(jù)進(jìn)行獲取,對(duì)比下,使用正則表達(dá)式來(lái)獲取數(shù)據(jù)的效率和功能高一些。

      使用抓包分析獲取異步加載動(dòng)態(tài)網(wǎng)頁(yè)的數(shù)據(jù),下一步會(huì)研究使用Python工具實(shí)現(xiàn)爬取動(dòng)態(tài)網(wǎng)頁(yè)。借助Python功能的各種標(biāo)準(zhǔn)庫(kù)對(duì)網(wǎng)頁(yè)數(shù)據(jù)的抓取、處理,更方便地實(shí)現(xiàn)數(shù)據(jù)持久化。下一步也會(huì)探索一些爬蟲(chóng)框架來(lái)完成數(shù)據(jù)抓取的目標(biāo)。也會(huì)繼續(xù)學(xué)習(xí)并解決在更深層次地爬取各大網(wǎng)站信息的同時(shí)會(huì)遇到的反爬蟲(chóng)問(wèn)題。

      參考文獻(xiàn):

      [1] 郭二強(qiáng),李博.大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲(chóng)技術(shù) [J].計(jì)算機(jī)產(chǎn)品與流通,2017(12):82.

      [2] 李培.基于Python的網(wǎng)絡(luò)爬蟲(chóng)與反爬蟲(chóng)技術(shù)研究 [J].計(jì)算機(jī)與數(shù)字工程,2019,47(6):1415-1420+1496.

      [3] 王朝陽(yáng).基于Python的圖書(shū)信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].長(zhǎng)春:吉林大學(xué),2016.

      [4] 徐恒.社會(huì)化網(wǎng)絡(luò)數(shù)據(jù)獲取技術(shù)研究與實(shí)現(xiàn) [D].長(zhǎng)春:吉林大學(xué),2016.

      [5] 孫建立,賈卓生.基于Python網(wǎng)絡(luò)爬蟲(chóng)的實(shí)現(xiàn)及內(nèi)容分析研究 [C]//中國(guó)計(jì)算機(jī)用戶(hù)協(xié)會(huì)網(wǎng)絡(luò)應(yīng)用分會(huì)2017年第二十一屆網(wǎng)絡(luò)新技術(shù)與應(yīng)用年會(huì).中國(guó)計(jì)算機(jī)用戶(hù)協(xié)會(huì)網(wǎng)絡(luò)應(yīng)用分會(huì)2017年第二十一屆網(wǎng)絡(luò)新技術(shù)與應(yīng)用年會(huì)論文集.河北雄安:《計(jì)算機(jī)科 學(xué)》編輯部,2017:275-277+281.

      [6] 陳琳,任芳.基于Python的新浪微博數(shù)據(jù)爬蟲(chóng)程序設(shè)計(jì) [J].信息系統(tǒng)工程,2016(9):97-99.

      [7] 陸樹(shù)芬.基于Python對(duì)網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [J].電腦編程技巧與維護(hù),2019(2):26-27+51.

      [8] 熊暢.基于Python爬蟲(chóng)技術(shù)的網(wǎng)頁(yè)數(shù)據(jù)抓取與分析研究 [J].數(shù)字技術(shù)與應(yīng)用,2017(9):35-36.

      [9] 吳爽.基于python語(yǔ)言的web數(shù)據(jù)挖掘與分析研究 [J].電腦知識(shí)與技術(shù),2018,14(27):1-2.

      作者簡(jiǎn)介:溫婭娜(1999.03-),女,漢族,內(nèi)蒙古包頭人,本科,學(xué)士學(xué)位,研究方向:人工智能和軟件開(kāi)發(fā)應(yīng)用。

      猜你喜歡
      網(wǎng)絡(luò)爬蟲(chóng)
      煉鐵廠(chǎng)鐵量網(wǎng)頁(yè)數(shù)據(jù)獲取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      基于社會(huì)網(wǎng)絡(luò)分析的權(quán)威網(wǎng)頁(yè)挖掘研究
      主題搜索引擎中網(wǎng)絡(luò)爬蟲(chóng)的實(shí)現(xiàn)研究
      淺析如何應(yīng)對(duì)網(wǎng)絡(luò)爬蟲(chóng)流量
      網(wǎng)絡(luò)爬蟲(chóng)針對(duì)“反爬”網(wǎng)站的爬取策略研究
      礼泉县| 仁化县| 靖远县| 太湖县| 沾化县| 屏东县| 鞍山市| 沁阳市| 吴堡县| 塘沽区| 黄平县| 志丹县| 湖北省| 东乡族自治县| 民丰县| 博野县| 长汀县| 来宾市| 伊春市| 武夷山市| 海南省| 镇原县| 胶南市| 抚松县| 景德镇市| 宁明县| 松原市| 乐至县| 漾濞| 靖江市| 嘉荫县| 阳西县| 吉安市| 北安市| 博爱县| 泾阳县| 西藏| 钟祥市| 双鸭山市| 武乡县| 札达县|