亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的電子元件信息爬取與數(shù)據(jù)可視化系統(tǒng)設(shè)計(jì)

        2023-07-20 22:27:44余麗紅楊董濤李弋峰柳貴東
        無線互聯(lián)科技 2023年9期
        關(guān)鍵詞:網(wǎng)絡(luò)爬蟲數(shù)據(jù)可視化

        余麗紅 楊董濤 李弋峰 柳貴東

        摘要:電子元器件公司在日常的工作中,需要對(duì)市場(chǎng)上的電子物料信息做信息爬取,了解這些物料的基本信息,方便采購(gòu)部門有關(guān)人員去選擇采購(gòu)。文章設(shè)計(jì)了一個(gè)能夠自動(dòng)在網(wǎng)上爬取電子元件信息并且進(jìn)行數(shù)據(jù)可視化的爬蟲系統(tǒng)。該設(shè)計(jì)是基于Python語言開發(fā)的爬蟲系統(tǒng),能夠節(jié)約更多的人力物力,對(duì)于從事電子元器件行業(yè)的工作人員高效獲取電子元件信息有很大的幫助。

        關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;Python;數(shù)據(jù)可視化;反爬

        中圖分類號(hào):F426.63

        文獻(xiàn)標(biāo)志碼:A

        0 引言

        網(wǎng)絡(luò)爬蟲又被稱為網(wǎng)絡(luò)機(jī)器人。它的工作就是在網(wǎng)頁上搜索所需要的信息,是搜索引擎的重要組成部分1。它的工作原理是先確定所需要爬取的主頁面的URL,然后通過此URL對(duì)目標(biāo)服務(wù)器發(fā)出請(qǐng)求,在發(fā)出請(qǐng)求的同時(shí)還需要攜帶一些參數(shù),避免反爬。服務(wù)器收到請(qǐng)求后給出響應(yīng),爬蟲程序就獲得了此URL的頁面源代碼。通過解析源代碼獲得所需要的數(shù)據(jù)。

        本文設(shè)計(jì)的爬蟲系統(tǒng),能夠爬取互聯(lián)網(wǎng)指定網(wǎng)站上的電子元件信息,實(shí)現(xiàn)從購(gòu)買電子物料的網(wǎng)頁上將所需要的電子物料信息具體詳細(xì)獲取下來,進(jìn)行存儲(chǔ),清洗再可視化,便于用戶對(duì)這些信息的觀察與選擇。該系統(tǒng)做出可視化圖形便于用戶根據(jù)需求選擇所需的電子物料,能夠節(jié)省大量的人力物力,節(jié)省產(chǎn)品元器件采購(gòu)設(shè)計(jì)的時(shí)長(zhǎng),降低生產(chǎn)成本。

        1 系統(tǒng)設(shè)計(jì)方案

        根據(jù)要完成的功能(數(shù)據(jù)爬取、數(shù)據(jù)清洗和數(shù)據(jù)可視化),系統(tǒng)主要包括四大模塊,分別是:獲取頁面源碼模塊、頁面源碼數(shù)據(jù)解析模塊、響應(yīng)數(shù)據(jù)處理模塊和數(shù)據(jù)可視化模塊。系統(tǒng)的結(jié)構(gòu)如圖1所示。

        圖1中獲取頁面源碼模塊主要是通過requests庫(kù)對(duì)目標(biāo)URL發(fā)起請(qǐng)求獲得目標(biāo)URL的頁面源碼2。頁面源碼數(shù)據(jù)解析模塊主要負(fù)責(zé)對(duì)獲取到的頁面源碼進(jìn)行分析從而獲取所需要的數(shù)據(jù);響應(yīng)數(shù)據(jù)處理模塊主要負(fù)責(zé)對(duì)最終所得到的響應(yīng)數(shù)據(jù)進(jìn)行處理,得到最終想要獲取的詳細(xì)數(shù)據(jù)后再對(duì)其進(jìn)行本地存儲(chǔ);數(shù)據(jù)可視化模塊就是負(fù)責(zé)對(duì)本地所存儲(chǔ)的數(shù)據(jù)進(jìn)行可視化處理,便于用戶更加直觀地了解產(chǎn)品信息。

        2 系統(tǒng)的實(shí)現(xiàn)方法

        2.1 利用反爬機(jī)制獲取頁面源碼方法

        獲取頁面源碼最大的阻礙就是在訪問目標(biāo)URL時(shí),會(huì)遇見一些常見和特殊的反爬措施。最常見的反爬機(jī)制有UA反爬、基于Cookie的反爬和Ajax動(dòng)態(tài)加載。針對(duì)UA反爬,通過在瀏覽器中打開目標(biāo)網(wǎng)頁,啟動(dòng)開發(fā)者工具,在數(shù)據(jù)包中找到請(qǐng)求頭。在請(qǐng)求頭中將“User-Agent”的參數(shù)復(fù)制到腳本中,放入header里面,在發(fā)起請(qǐng)求的時(shí)候攜帶此header,就可以成功獲取數(shù)據(jù)。對(duì)于Cookie反爬,只需要在發(fā)起請(qǐng)求時(shí)使用session方法,就能夠保存在發(fā)起請(qǐng)求的時(shí)候產(chǎn)生的Cookie值,下次再次發(fā)出請(qǐng)求時(shí)就會(huì)攜帶此Cookie。對(duì)于Ajax動(dòng)態(tài)加載的數(shù)據(jù),先在網(wǎng)頁中找到動(dòng)態(tài)加載出來的數(shù)據(jù)包,然后在此數(shù)據(jù)包中找到關(guān)于頁面數(shù)的參數(shù),并將表單數(shù)據(jù)中的參數(shù)都復(fù)制下來,在系統(tǒng)源代碼中做一個(gè)字典來存儲(chǔ)此數(shù)據(jù)。之后再發(fā)出申請(qǐng)時(shí)會(huì)攜帶此字典,就能夠成功獲取到動(dòng)態(tài)加載的數(shù)據(jù)。

        2.2 頁面源碼數(shù)據(jù)解析方法

        頁面源碼數(shù)據(jù)解析模塊是對(duì)獲取到的頁面源碼進(jìn)行處理,找出需要的數(shù)據(jù),并根據(jù)數(shù)據(jù)所在的位置使用xpath或正則表達(dá)式來獲取相關(guān)的數(shù)據(jù)3。在此模塊中,對(duì)于一般返回的頁面源碼數(shù)據(jù)解析會(huì)比較簡(jiǎn)單。但是對(duì)于動(dòng)態(tài)加載的數(shù)據(jù)解析,就需要先到動(dòng)態(tài)加載的數(shù)據(jù)所在的位置,并且將此數(shù)據(jù)格式化,格式化后的數(shù)據(jù)有利于觀察。之后根據(jù)觀察到的數(shù)據(jù)所在位置,編寫代碼獲取數(shù)據(jù),并按需要輸出特定格式的數(shù)據(jù)。

        2.3 響應(yīng)數(shù)據(jù)處理方法

        響應(yīng)數(shù)據(jù)處理模塊主要的工作內(nèi)容就是對(duì)獲取得到的數(shù)據(jù)進(jìn)行處理,處理的內(nèi)容包括對(duì)數(shù)據(jù)的清洗、存儲(chǔ)。數(shù)據(jù)的清洗是將不符合要求的數(shù)據(jù)進(jìn)行過濾,過濾后的數(shù)據(jù)才是有價(jià)值的數(shù)據(jù)。而數(shù)據(jù)存儲(chǔ)就是將清洗后的數(shù)據(jù)進(jìn)行本地保存或者保存在數(shù)據(jù)庫(kù)中。

        2.4 數(shù)據(jù)可視化方法

        數(shù)據(jù)可視化模塊主要就是對(duì)保存的數(shù)據(jù)進(jìn)行繪制可視化圖形處理,方便更加直觀地觀察數(shù)據(jù)的信息,而在此模塊中負(fù)責(zé)繪制圖形的庫(kù)為Matpoltlib庫(kù)。Matplotlib是Python中最受歡迎的數(shù)據(jù)可視化軟件包之一,支持跨平臺(tái)運(yùn)行。

        本模塊主要繪制柱狀圖和餅狀圖,在Matpoltlib中就需要是用bar()函數(shù)來繪制柱狀圖,還需要使用pie()函數(shù)來繪制餅狀圖。而在這些函數(shù)中還需要定義一些參數(shù)來定義繪制的圖形的大小、位置和樣式。

        3 系統(tǒng)的函數(shù)實(shí)現(xiàn)

        3.1 系統(tǒng)的流程設(shè)計(jì)

        系統(tǒng)主要處理流程如圖2所示。開始對(duì)目標(biāo)URL發(fā)起請(qǐng)求,獲得目標(biāo)URL的頁面源碼,再對(duì)其分析,列出所有初級(jí)的電子元件類型選擇,用戶選擇自己所需求的類型。對(duì)用戶所選擇的類型所對(duì)應(yīng)的URL發(fā)起請(qǐng)求,通過其頁面源碼解析獲得初級(jí)電子元件類型并列出來。用戶選擇具體類型,對(duì)最終的URL發(fā)起請(qǐng)求獲得最終響應(yīng)。獲取到元件的所有頁面數(shù),再利用循環(huán)對(duì)所有頁面進(jìn)行爬取,得到所有的數(shù)據(jù),在爬取數(shù)據(jù)的過程中若沒有對(duì)應(yīng)的參數(shù)則用“-”表示。之后對(duì)所獲取到的所有數(shù)據(jù)進(jìn)行本地存儲(chǔ),最后對(duì)存儲(chǔ)的數(shù)據(jù)進(jìn)行可視化處理生成柱形圖、詞云或餅狀圖,列出最優(yōu)選擇。

        3.2 獲取頁面源碼的實(shí)現(xiàn)

        獲取頁面源碼模塊程序主要使用session來實(shí)現(xiàn)。主要實(shí)現(xiàn)方法是先定義一個(gè)session對(duì)象:

        session = requests.session(),

        再根據(jù)提供的url進(jìn)行頁面爬取:

        page_text = session.get(url = url,headers = headers).content.decode(‘utf-6)。

        其中headers在文件開頭已經(jīng)定義,后面攜帶的content.decode(‘utf-8)是解決爬取到的中文數(shù)據(jù)亂碼的問題。將爬取到的數(shù)據(jù)字符類型都定義為utf-8。最后返回page_text。對(duì)于電子元件信息的多頁爬取,可以通過一個(gè)循環(huán)來實(shí)現(xiàn)。當(dāng)要爬取所有頁面的數(shù)據(jù)時(shí),首先要知道總頁數(shù)(pageCount),還要得到需要爬取的電子料的代號(hào)(NodeID),最后將表單數(shù)據(jù)構(gòu)建為data參數(shù)。

        3.3 數(shù)據(jù)清洗與本地存儲(chǔ)的實(shí)現(xiàn)

        當(dāng)數(shù)據(jù)的爬取完成后,接下來還要對(duì)爬取下來的數(shù)據(jù)進(jìn)行清洗,將沒有意義的干擾數(shù)據(jù)信息去除掉4。本文使用text = text(~((text.電子元器件 == 0) )代碼,將無意義元器件的信息值設(shè)為0來實(shí)現(xiàn)清洗。當(dāng)數(shù)據(jù)清洗完畢后,接下來需要做的操作就是對(duì)數(shù)據(jù)進(jìn)行本地存儲(chǔ),本文使用csv表格來存儲(chǔ)爬取到的電子元件信息數(shù)據(jù)。首先需要為存儲(chǔ)的表格構(gòu)造一個(gè)列名,就是每一列存放數(shù)據(jù)的名稱,將這些列名放入一個(gè)列表中l(wèi)able = [列名1,列名2,…列名n],之后將爬取到的數(shù)據(jù)和列名構(gòu)造成pandas中的DataFrame對(duì)象,對(duì)象名為text。實(shí)現(xiàn)語句為text = pandas.DataFrame(爬取到的數(shù)據(jù)列表名,columns = lable)。之后再通過爬取的電子物料名稱作為存儲(chǔ)的csv文件的文件名。創(chuàng)建csv文件并將DataFrame對(duì)象text寫入該文件,完成數(shù)據(jù)的本地存儲(chǔ)。

        3.4 數(shù)據(jù)可視化的實(shí)現(xiàn)

        數(shù)據(jù)可視化用到的庫(kù)有pandas、matplotlib和os。首先,需要用os庫(kù)將腳本所在的文件下所有csv文件列出來供用戶選擇。當(dāng)用戶選擇了一個(gè)csv文件后,程序會(huì)提示用戶選擇所需要的操作。數(shù)據(jù)可視化模塊流程如圖3所示。

        4 系統(tǒng)測(cè)試

        系統(tǒng)測(cè)試主要包括頁面爬取測(cè)試和次級(jí)分類爬取測(cè)試。首頁爬取測(cè)試是對(duì)初始URL發(fā)出請(qǐng)求,獲取初始URL的首頁頁面源碼,再通過數(shù)據(jù)解析,將首頁的頁面源碼當(dāng)中所有電子物料的大分類名稱全部獲取到,并且顯示在終端。次級(jí)分類爬取測(cè)試是在獲取到首頁電子物料大分類的情況下,對(duì)單個(gè)大分類的電子物料下的具體分類信息進(jìn)行獲取并顯示在終端窗口。測(cè)試表明,該系統(tǒng)實(shí)現(xiàn)了相應(yīng)的功能。

        5 結(jié)語

        本文以電子產(chǎn)品貿(mào)易公司的電子元器件信息搜集工作為出發(fā)點(diǎn),為提升電子元器件信息搜集的效率,設(shè)計(jì)基于Python語言的爬蟲系統(tǒng)。該系統(tǒng)主要分為四大模塊,分別是數(shù)據(jù)獲取模塊、數(shù)據(jù)清洗模塊、數(shù)據(jù)存儲(chǔ)模塊和數(shù)據(jù)可視化模塊。數(shù)據(jù)爬取模塊將用戶所需要的數(shù)據(jù)從互聯(lián)網(wǎng)上獲取下來,并且在此過程中應(yīng)對(duì)一些反爬技術(shù)。數(shù)據(jù)清洗模塊將獲取到的數(shù)據(jù)進(jìn)行清洗,將不符合要求的數(shù)據(jù)去掉,保留有價(jià)值的數(shù)據(jù)。數(shù)據(jù)存儲(chǔ)模塊將清洗過后的數(shù)據(jù)存儲(chǔ)到本地或數(shù)據(jù)庫(kù)中。數(shù)據(jù)可視化模塊將存儲(chǔ)的數(shù)據(jù)做成可以更直觀地查看數(shù)據(jù)信息的可視化圖形。該系統(tǒng)實(shí)現(xiàn)了電子元器件信息的批量下載及可視化操作,方便工作人員根據(jù)需求選擇所需的電子物料。

        參考文獻(xiàn)

        [1]盧花,馮新.網(wǎng)絡(luò)爬蟲在批量獲取教學(xué)資源中的應(yīng)用[J].福建電腦,2022(7):103-105.

        [2]孟憲穎,毛應(yīng)爽.基于Python爬蟲技術(shù)的商品信息采集與分析[J].軟件,2021(11):128-130.

        [3]于淑云.基于校園BBS的輿情系統(tǒng)爬蟲應(yīng)用研究[J].長(zhǎng)春工程學(xué)院學(xué)報(bào),2016(2):95-98.

        [4]楊丕仁.基于Python語言的網(wǎng)絡(luò)日志處理系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2016(15):117-119.

        (編輯 李春燕)

        Design of electronic component information crawling and data visualization system based on Python

        Yu Lihong, Yang Dongtao, Li Yifeng, Liu Guidong*

        (School of Electronic and Information Engineering,Guangdong Baiyun University, Guangzhou 510450, China)

        Abstract: In daily work, electronic component companies need to crawl the information of electronic materials in the market to understand the basic information of these materials, so that relevant personnel of the purchasing department can choose to purchase. This paper designs a crawler system that can automatically crawl the information of electronic components on the Internet and visualize the data. This design is a crawler system developed based on Python language. This system can save more manpower and material resources, and it is very helpful for the staff engaged in electronic component industry to obtain electronic component information efficiently.

        Key words: web crawler; Python; data visualization; reverse crawl

        猜你喜歡
        網(wǎng)絡(luò)爬蟲數(shù)據(jù)可視化
        大數(shù)據(jù)時(shí)代背景下本科教學(xué)質(zhì)量動(dòng)態(tài)監(jiān)控系統(tǒng)的構(gòu)建
        可視化:新媒體語境下的數(shù)據(jù)、敘事與設(shè)計(jì)研究
        煉鐵廠鐵量網(wǎng)頁數(shù)據(jù)獲取系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        我國(guó)數(shù)據(jù)新聞的發(fā)展困境與策略研究
        科技傳播(2016年19期)2016-12-27 14:53:29
        基于R語言的大數(shù)據(jù)審計(jì)方法研究
        基于社會(huì)網(wǎng)絡(luò)分析的權(quán)威網(wǎng)頁挖掘研究
        主題搜索引擎中網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)研究
        淺析如何應(yīng)對(duì)網(wǎng)絡(luò)爬蟲流量
        亚洲一区二区三区四区五区六| 日韩精品视频免费福利在线观看 | 国产免费av片在线观看播放| 亚洲日韩精品AⅤ片无码富二代| 麻豆成年人视频在线观看| 亚洲天堂二区三区三州| 少妇中文字幕乱码亚洲影视| 国产成人精品av| 欧美精品久久久久久三级| 色猫咪免费人成网站在线观看| 久久人人爽人人爽人人片av麻烦| 日韩亚洲中文图片小说| 国产亚洲精品高清视频| 日韩肥臀人妻中文字幕一区| 人妻 偷拍 无码 中文字幕| 好吊色欧美一区二区三区四区| 久久成人永久免费播放| 日韩人妻免费一区二区三区| 国产精品福利高清在线| 久久久亚洲精品一区二区三区| 国产中老年妇女精品| 国产女人体一区二区三区| 美女一区二区三区在线视频| aaa日本高清在线播放免费观看| 痉挛高潮喷水av无码免费| 亚洲VA中文字幕欧美VA丝袜| 国产成人自拍视频在线观看网站| 在线播放草猛免费视频| 中文字幕一区日韩精品| 蜜臀av一区二区| 日韩在线手机专区av| 国产一区二区黄色的网站| 亚洲欧美国产精品久久| 女人色毛片女人色毛片18| 国产福利小视频91| 在线国产丝袜自拍观看| 亚洲av乱码一区二区三区林ゆな| 海角国精产品一区一区三区糖心| 波多野结衣一区二区三区免费视频 | 久久精品中文闷骚内射| 人妻无码一区二区三区四区|