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

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

2023-07-20 22:27:44余麗紅楊董濤李弋峰柳貴東
無(wú)線互聯(lián)科技 2023年9期

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

摘要:電子元器件公司在日常的工作中,需要對(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語(yǔ)言開發(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)頁(yè)上搜索所需要的信息,是搜索引擎的重要組成部分1。它的工作原理是先確定所需要爬取的主頁(yè)面的URL,然后通過此URL對(duì)目標(biāo)服務(wù)器發(fā)出請(qǐng)求,在發(fā)出請(qǐng)求的同時(shí)還需要攜帶一些參數(shù),避免反爬。服務(wù)器收到請(qǐng)求后給出響應(yīng),爬蟲程序就獲得了此URL的頁(yè)面源代碼。通過解析源代碼獲得所需要的數(shù)據(jù)。

本文設(shè)計(jì)的爬蟲系統(tǒng),能夠爬取互聯(lián)網(wǎng)指定網(wǎng)站上的電子元件信息,實(shí)現(xiàn)從購(gòu)買電子物料的網(wǎng)頁(yè)上將所需要的電子物料信息具體詳細(xì)獲取下來(lái),進(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)主要包括四大模塊,分別是:獲取頁(yè)面源碼模塊、頁(yè)面源碼數(shù)據(jù)解析模塊、響應(yīng)數(shù)據(jù)處理模塊和數(shù)據(jù)可視化模塊。系統(tǒng)的結(jié)構(gòu)如圖1所示。

圖1中獲取頁(yè)面源碼模塊主要是通過requests庫(kù)對(duì)目標(biāo)URL發(fā)起請(qǐng)求獲得目標(biāo)URL的頁(yè)面源碼2。頁(yè)面源碼數(shù)據(jù)解析模塊主要負(fù)責(zé)對(duì)獲取到的頁(yè)面源碼進(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ī)制獲取頁(yè)面源碼方法

獲取頁(yè)面源碼最大的阻礙就是在訪問目標(biāo)URL時(shí),會(huì)遇見一些常見和特殊的反爬措施。最常見的反爬機(jī)制有UA反爬、基于Cookie的反爬和Ajax動(dòng)態(tài)加載。針對(duì)UA反爬,通過在瀏覽器中打開目標(biāo)網(wǎng)頁(yè),啟動(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)頁(yè)中找到動(dòng)態(tài)加載出來(lái)的數(shù)據(jù)包,然后在此數(shù)據(jù)包中找到關(guān)于頁(yè)面數(shù)的參數(shù),并將表單數(shù)據(jù)中的參數(shù)都復(fù)制下來(lái),在系統(tǒng)源代碼中做一個(gè)字典來(lái)存儲(chǔ)此數(shù)據(jù)。之后再發(fā)出申請(qǐng)時(shí)會(huì)攜帶此字典,就能夠成功獲取到動(dòng)態(tài)加載的數(shù)據(jù)。

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

頁(yè)面源碼數(shù)據(jù)解析模塊是對(duì)獲取到的頁(yè)面源碼進(jìn)行處理,找出需要的數(shù)據(jù),并根據(jù)數(shù)據(jù)所在的位置使用xpath或正則表達(dá)式來(lái)獲取相關(guān)的數(shù)據(jù)3。在此模塊中,對(duì)于一般返回的頁(yè)面源碼數(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ù)來(lái)繪制柱狀圖,還需要使用pie()函數(shù)來(lái)繪制餅狀圖。而在這些函數(shù)中還需要定義一些參數(shù)來(lái)定義繪制的圖形的大小、位置和樣式。

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的頁(yè)面源碼,再對(duì)其分析,列出所有初級(jí)的電子元件類型選擇,用戶選擇自己所需求的類型。對(duì)用戶所選擇的類型所對(duì)應(yīng)的URL發(fā)起請(qǐng)求,通過其頁(yè)面源碼解析獲得初級(jí)電子元件類型并列出來(lái)。用戶選擇具體類型,對(duì)最終的URL發(fā)起請(qǐng)求獲得最終響應(yīng)。獲取到元件的所有頁(yè)面數(shù),再利用循環(huán)對(duì)所有頁(yè)面進(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 獲取頁(yè)面源碼的實(shí)現(xiàn)

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

session = requests.session(),

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

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ì)于電子元件信息的多頁(yè)爬取,可以通過一個(gè)循環(huán)來(lái)實(shí)現(xiàn)。當(dāng)要爬取所有頁(yè)面的數(shù)據(jù)時(shí),首先要知道總頁(yè)數(shù)(pageCount),還要得到需要爬取的電子料的代號(hào)(NodeID),最后將表單數(shù)據(jù)構(gòu)建為data參數(shù)。

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

當(dāng)數(shù)據(jù)的爬取完成后,接下來(lái)還要對(duì)爬取下來(lái)的數(shù)據(jù)進(jìn)行清洗,將沒有意義的干擾數(shù)據(jù)信息去除掉4。本文使用text = text(~((text.電子元器件 == 0) )代碼,將無(wú)意義元器件的信息值設(shè)為0來(lái)實(shí)現(xiàn)清洗。當(dāng)數(shù)據(jù)清洗完畢后,接下來(lái)需要做的操作就是對(duì)數(shù)據(jù)進(jìn)行本地存儲(chǔ),本文使用csv表格來(lái)存儲(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)語(yǔ)句為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文件列出來(lái)供用戶選擇。當(dāng)用戶選擇了一個(gè)csv文件后,程序會(huì)提示用戶選擇所需要的操作。數(shù)據(jù)可視化模塊流程如圖3所示。

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

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

5 結(jié)語(yǔ)

本文以電子產(chǎn)品貿(mào)易公司的電子元器件信息搜集工作為出發(fā)點(diǎn),為提升電子元器件信息搜集的效率,設(shè)計(jì)基于Python語(yǔ)言的爬蟲系統(tǒng)。該系統(tǒng)主要分為四大模塊,分別是數(shù)據(jù)獲取模塊、數(shù)據(jù)清洗模塊、數(shù)據(jù)存儲(chǔ)模塊和數(shù)據(jù)可視化模塊。數(shù)據(jù)爬取模塊將用戶所需要的數(shù)據(jù)從互聯(lián)網(wǎng)上獲取下來(lái),并且在此過程中應(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語(yǔ)言的網(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

主站蜘蛛池模板: 色综合综合网| 久久国产毛片| 久久精品电影| 中日韩一区二区三区中文免费视频 | 澳门av无码| 午夜激情婷婷| 91在线激情在线观看| 色综合手机在线| 久久9966精品国产免费| 亚洲三级电影在线播放| 最新国产麻豆aⅴ精品无| 亚洲性视频网站| 国产在线视频导航| 日韩人妻无码制服丝袜视频| 亚洲精品不卡午夜精品| 国产三级视频网站| 台湾AV国片精品女同性| 国产又爽又黄无遮挡免费观看| 国产嫩草在线观看| 九九香蕉视频| 黄色国产在线| 欧洲av毛片| 青青青视频免费一区二区| 狠狠干欧美| 四虎国产精品永久在线网址| 亚洲水蜜桃久久综合网站| 国产区网址| 亚洲高清无码久久久| 五月天久久综合国产一区二区| 亚洲最猛黑人xxxx黑人猛交| 小13箩利洗澡无码视频免费网站| 精品国产aⅴ一区二区三区| 亚洲AV无码久久精品色欲 | 538国产在线| 久久精品午夜视频| 亚洲视频黄| 国产综合精品一区二区| 性色在线视频精品| 亚洲一区二区日韩欧美gif| 亚洲精品第一页不卡| 在线欧美日韩国产| 久久精品日日躁夜夜躁欧美| 日韩欧美中文亚洲高清在线| 亚洲国内精品自在自线官| 欧美精品xx| 国产地址二永久伊甸园| 素人激情视频福利| 91免费精品国偷自产在线在线| 四虎综合网| 久久男人资源站| 久久综合九色综合97婷婷| 日韩精品成人在线| 九九视频免费在线观看| 国产一区二区免费播放| 国产一区成人| 综合网天天| 欧美精品三级在线| 国产精品性| 熟女成人国产精品视频| 男人天堂伊人网| 亚洲精品动漫| 四虎在线高清无码| 91精品国产一区自在线拍| 久久精品视频亚洲| 国产精品大尺度尺度视频| 亚洲无码电影| 国产精品大尺度尺度视频| 伊人成人在线| 成人综合久久综合| 国产高颜值露脸在线观看| 凹凸国产熟女精品视频| 欧美日本在线播放| 无码丝袜人妻| 亚洲精品天堂自在久久77| 在线观看国产精美视频| 91青青草视频| 欧美在线精品一区二区三区| 久久久久夜色精品波多野结衣| 欧美成人手机在线观看网址| 亚洲人成在线精品| 亚洲欧美日韩天堂| 国产男人天堂|