版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
摘要本文描述了數(shù)碼產(chǎn)品資訊系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過程??傮w分為數(shù)據(jù)獲取、數(shù)據(jù)處理、數(shù)據(jù)展示三大模塊。數(shù)據(jù)獲取采用Python的request庫爬取中關(guān)村在線網(wǎng)站的手機(jī)數(shù)據(jù);數(shù)據(jù)處理采用Python的pandas庫以及正則匹配等工具處理非規(guī)格化數(shù)據(jù);數(shù)據(jù)展示采用完全的前后端分離獨(dú)立開發(fā)。后端以及后臺管理員界面采用Django架構(gòu),前端用于向客戶展示的界面選擇采用微信小程序。兩者之間通過drf框架進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)同步。通過不同產(chǎn)品的數(shù)據(jù)展示、數(shù)據(jù)對比等模塊,為消費(fèi)者在選購電子產(chǎn)品時(shí)提供參考的依據(jù)以及交流的平臺。關(guān)鍵詞:Django,網(wǎng)絡(luò)爬蟲,數(shù)據(jù)庫,微信小程序,數(shù)碼產(chǎn)品緒論課題的背景與意義5G手機(jī)成為電子產(chǎn)品消費(fèi)的新風(fēng)口,5G、計(jì)算攝影、折疊屏等新技術(shù)應(yīng)用于智能手機(jī),智能手機(jī)的換機(jī)市場被重新喚醒[1]。2019年年中,華為發(fā)布了國內(nèi)首部商用5G手機(jī),經(jīng)過了兩年多的發(fā)展,我國的5G建設(shè)已經(jīng)基本成熟。2020年開始,幾乎所有的主流廠商的旗艦機(jī)型不再提供4G版本,5G手機(jī)的價(jià)格也下探到千元的價(jià)位。與此同時(shí),不少消費(fèi)者反饋?zhàn)约菏褂玫?G手機(jī)存在卡頓、網(wǎng)速慢的問題,并且即使在不開通5G套餐的情況下使用5G手機(jī),也可以達(dá)到約300Mbps的網(wǎng)絡(luò)帶寬,這是現(xiàn)階段4G手機(jī)遠(yuǎn)遠(yuǎn)達(dá)不到的速度。4G的痛點(diǎn)逐漸顯現(xiàn)出來,所以不少消費(fèi)者選擇了優(yōu)先更換5G手機(jī)[2]。面對越來越多的換機(jī)需求和各大廠商的各種機(jī)型,構(gòu)建一個(gè)數(shù)碼產(chǎn)品資訊平臺幫助消費(fèi)者挑選適合自己的設(shè)備有存在的必要。此外,隨著互聯(lián)網(wǎng)產(chǎn)業(yè)的不斷發(fā)展,微信已經(jīng)成為國內(nèi)使用人數(shù)最多的“連接型”應(yīng)用,它幾乎涵蓋了人們?nèi)粘I畹姆椒矫婷妗?017年微信小程序的推出,突出了三個(gè)關(guān)鍵詞:“工具”“連接”與“場景”。電子產(chǎn)品換代是一個(gè)相對低頻率的需求,大部分消費(fèi)者的換機(jī)周期在25個(gè)月左右,相較于吃穿住行這種高頻需求,開發(fā)者往往不愿意花大成本來滿足這些低頻需求,用戶也往往不愿意專門安裝傳統(tǒng)APP來滿足自己低頻率的需求?,F(xiàn)在移動端的用戶量已經(jīng)遠(yuǎn)遠(yuǎn)大于PC端的用戶量,針對傳統(tǒng)網(wǎng)頁的移動瀏覽體驗(yàn)并不好的現(xiàn)狀,微信小程序的出現(xiàn)直面這些問題,無需安裝、觸手可及、用完即走、無需卸載的特性很好地解決了低頻需求的痛點(diǎn)[3]。因此,利用微信小程序做一個(gè)前端來展示數(shù)碼產(chǎn)品的信息以及提供簡單的交流平臺不失為一個(gè)有實(shí)現(xiàn)意義的方案。這個(gè)選題要求開發(fā)一套完整的數(shù)據(jù)獲取、處理、展示的系統(tǒng),對有換機(jī)需求的消費(fèi)者和一些數(shù)碼產(chǎn)品愛好者有一定的參考意義。首先,通過對數(shù)碼產(chǎn)品的各種參數(shù)進(jìn)行對比,給予消費(fèi)者直觀的可視化展示,幫助消費(fèi)者在選擇設(shè)備時(shí)對設(shè)備的各項(xiàng)配置參數(shù)有更加詳細(xì)的了解,做出更加適合自己的選擇,提升自己的消費(fèi)體驗(yàn)。其次,為數(shù)碼愛好者提供一個(gè)參數(shù)對比和查詢的平臺,并對相關(guān)產(chǎn)品進(jìn)行評價(jià),幫助對數(shù)碼產(chǎn)品不太了解的人群更好地選購產(chǎn)品。最后,平臺可以收集用戶需求,幫助數(shù)碼廠商的產(chǎn)品經(jīng)理更加明確用戶需求所在,設(shè)計(jì)和發(fā)布更加適合市場需求的產(chǎn)品。國內(nèi)外研究現(xiàn)狀和分析國外研究現(xiàn)狀國外關(guān)于網(wǎng)絡(luò)爬蟲的研究國外對于網(wǎng)絡(luò)爬蟲的研究開始較早,最早出現(xiàn)在上世紀(jì)90年代初期。在互聯(lián)網(wǎng)出現(xiàn)以后,網(wǎng)絡(luò)上的信息變得十分混亂,大量的冗余信息充斥著互聯(lián)網(wǎng)。這時(shí),網(wǎng)絡(luò)爬蟲就以搜索引擎的形式應(yīng)運(yùn)而生,比如1994年創(chuàng)建的雅虎,就用網(wǎng)絡(luò)爬蟲的技術(shù)大大提高了數(shù)據(jù)獲取的效率,這就是初代網(wǎng)絡(luò)爬蟲。隨著網(wǎng)絡(luò)爬蟲的普及,出現(xiàn)了一系列的主題網(wǎng)絡(luò)爬蟲系統(tǒng),1994年,DeBra[4]設(shè)計(jì)了一種基于網(wǎng)頁內(nèi)容分析策略的Fish-Search算法,但是該算法并不能計(jì)算鏈接和主題的相關(guān)度。2007年,Almpanidis[5]等人開發(fā)了一個(gè)潛在的語義索引分類器,結(jié)合鏈接分析和文本內(nèi)容,以檢索和索引領(lǐng)域特定的網(wǎng)絡(luò)文檔。國外關(guān)于數(shù)據(jù)系統(tǒng)的研究網(wǎng)絡(luò)爬蟲給我們帶來了大量的數(shù)據(jù),為了更好地利用這些海量數(shù)據(jù),僅靠人工處理顯然是不現(xiàn)實(shí)的。不少的國外企業(yè)已經(jīng)為了更高效率的生產(chǎn)開發(fā)了不少的數(shù)據(jù)分析系統(tǒng),比如日立公司[6]在2019年就有相關(guān)的專利申請。此外,在生物科學(xué)科研領(lǐng)域,ParkYoungKyu[7]等人就開發(fā)了一個(gè)數(shù)據(jù)分析系統(tǒng)來對某種基因治療法的數(shù)據(jù)進(jìn)行研究、分析和處理。國內(nèi)研究現(xiàn)狀國內(nèi)關(guān)于網(wǎng)絡(luò)爬蟲的研究國內(nèi)關(guān)于網(wǎng)絡(luò)爬蟲起步相對國外較晚,但也有不少的成就。2006年,蘇祺[8]等人根據(jù)對Shark-Search主題爬取算法的分析,提出了一種基于鏈接聚類的改進(jìn)Shark-Search算法。2011年,吳黎兵[9]等人提出一種可部署于單一網(wǎng)域及多網(wǎng)域間的分布式爬蟲DSpider。DSpider能夠通過調(diào)整節(jié)點(diǎn)規(guī)模和連接超時(shí)閾值,有效部署于局域網(wǎng)和廣域網(wǎng)中。近年來,網(wǎng)絡(luò)爬蟲廣泛應(yīng)用在國內(nèi)的金融、教育、旅游、醫(yī)學(xué)等各學(xué)科各行業(yè)當(dāng)中。國內(nèi)關(guān)于數(shù)據(jù)系統(tǒng)的研究由于近年來互聯(lián)網(wǎng)的高速發(fā)展,很多行業(yè)的數(shù)據(jù)都通過網(wǎng)絡(luò)進(jìn)行存儲,構(gòu)成了海量的數(shù)據(jù)庫,這是一筆巨大的數(shù)據(jù)資源。2019年,王嬌嬌[10]等人設(shè)計(jì)了作物長勢監(jiān)測儀數(shù)據(jù)采集與分析系統(tǒng),體現(xiàn)了數(shù)據(jù)分析系統(tǒng)在農(nóng)業(yè)領(lǐng)域的應(yīng)用。2020年,賈文成[11]分析了數(shù)據(jù)分析系統(tǒng)在會計(jì)系統(tǒng)領(lǐng)域的可行性,體現(xiàn)了數(shù)據(jù)分析系統(tǒng)在金融領(lǐng)域的應(yīng)用。2021年,吳斌[12]提出基于智能數(shù)據(jù)分析的醫(yī)院服務(wù)質(zhì)量優(yōu)化決策支持系統(tǒng)設(shè)計(jì)方法,體現(xiàn)了數(shù)據(jù)分析系統(tǒng)在醫(yī)學(xué)領(lǐng)域的應(yīng)用。如今國內(nèi)外的數(shù)據(jù)分析系統(tǒng)基本都是基于大數(shù)據(jù)和人工智能等核心技術(shù),能夠更好地為各行業(yè)各領(lǐng)域服務(wù)。國內(nèi)關(guān)于微信小程序開發(fā)的研究微信作為一款國產(chǎn)軟件,它的用戶群體大多是國內(nèi)用戶,所以很少有國外開發(fā)者會對微信小程序的開發(fā)有研究。與此相反,國內(nèi)有不少的開發(fā)者致力于微信小程序的開發(fā),比如劉剛[12]還有其他的開發(fā)者也出版了相關(guān)的教程供大家學(xué)習(xí)和研究。隨著微信小程序的推出,涌現(xiàn)了不少的例如“‘互聯(lián)網(wǎng)+’可以連接一切,微信正在‘連接一切’,而小程序正在悄然改變這一切?!盵13]的類似觀點(diǎn)。近年來,越來越多的國內(nèi)開發(fā)者選擇利用微信小程序這一平臺免安裝、跨平臺的特點(diǎn)來吸引新用戶,覆蓋領(lǐng)域也十分廣泛,包含了人們?nèi)粘5某源┳⌒?,以及醫(yī)院掛號、游戲娛樂等領(lǐng)域。研究發(fā)展的趨勢和期望關(guān)于網(wǎng)絡(luò)爬蟲的發(fā)展趨勢當(dāng)前,靜態(tài)網(wǎng)絡(luò)爬蟲技術(shù)已經(jīng)十分成熟。但是,隨著ajax技術(shù)的發(fā)展,現(xiàn)在大多數(shù)的網(wǎng)頁數(shù)據(jù)采用了動態(tài)加載的技術(shù),使用傳統(tǒng)的爬蟲技術(shù)經(jīng)常無法正常獲取數(shù)據(jù)。因此,接下來對于爬蟲技術(shù)的相關(guān)研究應(yīng)該以事件為驅(qū)動,更好地適應(yīng)新一代web的發(fā)展趨勢[14]關(guān)于數(shù)據(jù)系統(tǒng)的發(fā)展趨勢近些年來,隨著互聯(lián)網(wǎng)用戶的高速增加,每時(shí)每刻都在產(chǎn)生大量的數(shù)據(jù).隨著虛擬機(jī)技術(shù)以及云計(jì)算技術(shù)的發(fā)展,大數(shù)據(jù)的時(shí)代已經(jīng)來臨。面對海量的數(shù)據(jù),傳統(tǒng)的數(shù)據(jù)分析和管理的方法顯然不能夠滿足需求,并且傳統(tǒng)數(shù)據(jù)分析方法和數(shù)據(jù)管理方式已經(jīng)比較穩(wěn)定,所以在未來相當(dāng)長的一段時(shí)間內(nèi),如果原有的系統(tǒng)能夠滿足應(yīng)用場景的部分需求,可以通過性能提升來加強(qiáng)可靠性,如果需求得不到滿足,那么就需要在大數(shù)據(jù)框架的基礎(chǔ)上設(shè)計(jì)新的系統(tǒng)技術(shù)來進(jìn)行數(shù)據(jù)的管理和分析[15,16]。課題主要研究內(nèi)容與擬解決的主要問題本課題的研究基本內(nèi)容包括網(wǎng)絡(luò)爬蟲、數(shù)據(jù)處理、微信小程序和web應(yīng)用的開發(fā)。該課題最終目標(biāo)為構(gòu)建一套關(guān)于數(shù)碼產(chǎn)品資訊數(shù)據(jù)全流程的系統(tǒng),系統(tǒng)的功能包括數(shù)據(jù)獲取、數(shù)據(jù)維護(hù)、數(shù)據(jù)查詢、數(shù)據(jù)對比、產(chǎn)品評價(jià)、個(gè)性化推薦等功能。通過本課題的研究,可以在國內(nèi)目前眾多數(shù)碼廠商的激烈競爭,產(chǎn)品型號百花齊放的情況下,為消費(fèi)者在面對選購產(chǎn)品時(shí)一頭霧水毫無頭緒的現(xiàn)狀提供幫助,解決產(chǎn)品選擇困難,產(chǎn)品信息相對分散的問題。本系統(tǒng)基于用戶需求,借助于電子商務(wù)蓬勃發(fā)展的時(shí)代,各式各樣的電子產(chǎn)品的參數(shù)信息都能很容易通過電商平臺以及一些主流數(shù)碼評測網(wǎng)站上找到,因此可以運(yùn)用網(wǎng)絡(luò)爬蟲技術(shù)來獲取這些零散的數(shù)據(jù)并進(jìn)行集中處理并展示,更好地幫助用戶了解各個(gè)產(chǎn)品的信息并構(gòu)造一個(gè)交流的平臺,解決用戶不知道如何選購電子產(chǎn)品的問題,讓消費(fèi)者在選購時(shí)不再感到困擾。同時(shí)也可以解決數(shù)碼愛好者查詢各個(gè)產(chǎn)品參數(shù)流程較為復(fù)雜的問題,讓極客們在比較參數(shù)時(shí)能有更加直觀、舒適的感受。系統(tǒng)主要的功能模塊如下:1. 初始數(shù)據(jù)的獲取模塊2. 管理員后臺登錄模塊3. 管理員后臺數(shù)據(jù)增刪改查模塊4. 用戶前端數(shù)據(jù)查詢模塊5. 用戶前端數(shù)據(jù)對比模塊6. 用戶前端數(shù)據(jù)排行模塊7. 用戶前端個(gè)性化推薦模塊8. 用戶前端評價(jià)交流模塊根據(jù)以上功能模塊,可以發(fā)現(xiàn)在研究的過程中,擬解決的主要問題有:爬蟲穩(wěn)定性、個(gè)性化推薦算法、微信小程序和后臺數(shù)據(jù)庫的數(shù)據(jù)同步等。論文的組織形式與架構(gòu)本文將按照以下六個(gè)章節(jié)的結(jié)構(gòu)布局進(jìn)行闡述:第一章,緒論,敘述了本文的選題背景和意義,以及國內(nèi)外在這一領(lǐng)域的研究現(xiàn)狀和期望。。第二章,系統(tǒng)需求分析,對系統(tǒng)的目標(biāo)用戶、所需功能進(jìn)行闡述。第三章,系統(tǒng)總體設(shè)計(jì),對系統(tǒng)的各個(gè)模塊以及數(shù)據(jù)庫的設(shè)計(jì)進(jìn)行闡述。第四章,關(guān)鍵技術(shù)分析,對系統(tǒng)采用的關(guān)鍵技術(shù)以及代碼實(shí)現(xiàn)進(jìn)行闡述第五章,系統(tǒng)功能介紹,對系統(tǒng)的使用方法以及所包含的功能進(jìn)行闡述。第六章,結(jié)語,對系統(tǒng)的完成情況做出總結(jié),同時(shí)對自己在課題完成過程中的情況做出評價(jià)。系統(tǒng)需求分析系統(tǒng)總體需求分析本系統(tǒng)的目標(biāo)是搭建一個(gè)數(shù)碼產(chǎn)品資訊平臺,通過收集各個(gè)品牌產(chǎn)品的數(shù)據(jù),通過微信小程序的形式表現(xiàn)出來,從而使得消費(fèi)者在選購電子產(chǎn)品之前能夠有一個(gè)對比的平臺,同時(shí)也能夠有一個(gè)和平臺的其他用戶溝通交流的平臺。對此系統(tǒng)的各項(xiàng)業(yè)務(wù)流程敘述如下所示:在瀏覽器中輸入后臺網(wǎng)址進(jìn)入后臺管理員登錄界面。登錄完成后進(jìn)入列表頁,每頁九個(gè)以卡片的形式展示所有的產(chǎn)品簡介??梢酝ㄟ^搜索框檢索關(guān)鍵字來縮小顯示范圍。上方包含一個(gè)新增產(chǎn)品的按鈕,點(diǎn)擊后跳轉(zhuǎn)到新增產(chǎn)品頁,輸入各個(gè)信息后可以將數(shù)據(jù)存入數(shù)據(jù)庫并直接跳轉(zhuǎn)到該產(chǎn)品的詳情頁。每個(gè)卡片中包含一個(gè)查看詳情的按鈕,點(diǎn)擊后可以跳轉(zhuǎn)到產(chǎn)品的詳情界面。詳情界面中可以展示產(chǎn)品的全部數(shù)據(jù),同時(shí)包含編輯參數(shù)的按鈕以及一個(gè)刪除產(chǎn)品的按鈕。點(diǎn)擊編輯參數(shù)的按鈕后跳轉(zhuǎn)到產(chǎn)品參數(shù)的編輯界面,表單內(nèi)容和添加產(chǎn)品相同,并且自動填充。點(diǎn)擊刪除產(chǎn)品的按鈕后將彈出二次確認(rèn)框,確認(rèn)刪除后將直接跳轉(zhuǎn)到產(chǎn)品列表頁面??蛻酎c(diǎn)開小程序后將默認(rèn)進(jìn)入產(chǎn)品列表頁,此外底部的tabbar還有產(chǎn)品對比、產(chǎn)品排行、以及我的信息共計(jì)四個(gè)菜單選項(xiàng)。產(chǎn)品列表頁按照產(chǎn)品的品牌分類,點(diǎn)擊左側(cè)可以快速切換品牌。點(diǎn)擊列表頁中的產(chǎn)品可以跳轉(zhuǎn)到產(chǎn)品詳情頁面,展示各項(xiàng)參數(shù)以及對產(chǎn)品的所有評論。點(diǎn)擊底部發(fā)表評論按鈕默認(rèn)跳轉(zhuǎn)到登錄界面,若已登錄則直接跳轉(zhuǎn)到發(fā)表評論界面。產(chǎn)品對比界面可以通過品牌形成二級菜單,選擇兩個(gè)產(chǎn)品加入對比跳轉(zhuǎn)到對比的詳情頁。產(chǎn)品排行中可以看到按照不同屬性的升序以及降序排列。我的信息默認(rèn)為登錄以及注冊兩個(gè)按鈕,分別指向登錄頁面和注冊頁面,若已登錄,則顯示個(gè)人的基本信息以及所發(fā)表的所有評論。該系統(tǒng)通過便攜易使用的微信小程序,能夠大大激起消費(fèi)者在選購產(chǎn)品前的使用興趣,從而給予消費(fèi)者一些基礎(chǔ)知識,做出更加適合自己的選擇。用例圖分析該系統(tǒng)共有三種用戶,分別為后臺管理員、普通用戶以及游客。其中后臺管理員擁有獨(dú)立于普通用戶的賬戶系統(tǒng),可以對數(shù)據(jù)庫中所有數(shù)據(jù)進(jìn)行增刪改查的操作。后臺管理員的用例圖如REF_Ref100345666\r\h圖2-1所示。后臺管理員用例圖普通用戶無法訪問后臺,但是可以享受微信小程序中的所有查詢功能,并且允許添加評論。普通用戶用例圖如REF_Ref37347202\w\h圖2-2所示。普通用戶用例圖游客能夠進(jìn)入微信小程序查看參數(shù)以及進(jìn)行產(chǎn)品對比等功能,但是不能添加和查看自己的評論。游客的用例圖如下REF_Ref37347227\w\h圖2-3所示。游客用例圖可行性分析為了提供足夠的數(shù)據(jù)以供消費(fèi)者參考,本系統(tǒng)在構(gòu)建數(shù)據(jù)庫之前,需要先獲取數(shù)據(jù),這里采用Python中的request庫對中關(guān)村在線網(wǎng)址進(jìn)行網(wǎng)絡(luò)爬蟲,最后獲得了共計(jì)1400余條產(chǎn)品數(shù)據(jù),對其進(jìn)行預(yù)處、規(guī)格化等過程后,其中有效數(shù)據(jù)約800條左右,已經(jīng)足夠消費(fèi)者作為參考的依據(jù),后期管理員可以定期爬取網(wǎng)站數(shù)據(jù)以更新產(chǎn)品數(shù)據(jù)。后臺管理界面采用Django框架進(jìn)行開發(fā),ORM工具中modelForm的使用大大降低了開發(fā)的難度,十分便捷。微信小程序和Django后臺采用drf框架進(jìn)行數(shù)據(jù)交換,避免了jwt中較為復(fù)雜的token驗(yàn)證過程。總體方案可行。系統(tǒng)總體設(shè)計(jì)系統(tǒng)功能模塊設(shè)計(jì)根據(jù)該系統(tǒng)的需求分析,得出該系統(tǒng)的功能模塊設(shè)計(jì)圖如REF_Ref37347310\w\h圖3-1所示。系統(tǒng)功能模塊設(shè)計(jì)圖下面簡要闡述部分模塊的設(shè)計(jì)思路及內(nèi)容:后臺信息管理模塊產(chǎn)品信息管理:所有管理員可以選擇獲取數(shù)據(jù),并對其進(jìn)行預(yù)處理后導(dǎo)入數(shù)據(jù)庫,也可以在后臺管理的UI界面進(jìn)行數(shù)據(jù)的基本增刪改查操作。評論信息管理:管理員可以選擇普通添加的評論進(jìn)行刪除、編輯的操作。用戶信息管理:管理員可以刪除、修改用戶的個(gè)人信息。前臺數(shù)據(jù)展示模塊查看產(chǎn)品信息:所有用戶都可以查看所有產(chǎn)品的參數(shù),選擇兩個(gè)產(chǎn)品進(jìn)行參數(shù)對比,查看產(chǎn)品的數(shù)據(jù)排行。登錄后的用戶可以在產(chǎn)品詳情頁添加評論。個(gè)人信息管理:游客可以登錄或者注冊。普通用戶登錄后可以查看自己發(fā)表過的所有評論數(shù)據(jù)庫設(shè)計(jì)概念模型設(shè)計(jì)(E-R關(guān)系圖)通過需求分析,該系統(tǒng)需要根據(jù)用戶類型進(jìn)行權(quán)限的劃分,此外需要通過品牌來檢索對應(yīng)的產(chǎn)品,每個(gè)產(chǎn)品又需要評論的功能來實(shí)現(xiàn)用戶之間的交流。綜上所述,該系統(tǒng)需要有以下實(shí)體:用戶、產(chǎn)品信息、評論信息、品牌信息。各實(shí)體之間的關(guān)系圖如REF_Ref37785775\r\h圖3-2所示。E-R實(shí)體關(guān)系圖概念數(shù)據(jù)庫表設(shè)計(jì)表STYLEREF1\s3SEQ表\*ARABIC\s11用戶表:User屬性名id名稱編號類型int(11)是否允許為空非空備注自增,主鍵username用戶名varchar(20)非空password密碼varchar(64)非空可加密用戶表(User)如REF_Ref37949433\h表31所示,用于保存普通用戶的賬號密碼數(shù)據(jù),并不保存管理員的用戶數(shù)據(jù),管理員用戶數(shù)據(jù)由Django中的auth系統(tǒng)獨(dú)立完成,表結(jié)構(gòu)在此不做過多描述。表STYLEREF1\s3SEQ表\*ARABIC\s12產(chǎn)品信息表:Phone屬性名名稱類型是否允許為空備注id編號int(11)非空自增,主鍵name產(chǎn)品名varchar(100)非空cpu處理器varchar(100)可空price價(jià)格int(11)可空單位:人民幣resolution分辨率varchar(100)可空thick厚度varchar(100)可空length長度varchar(100)可空width寬度varchar(100)可空brand_id品牌int(11)可空Brand表,外鍵screen_refresh_rate屏幕刷新率varchar(50)可空screen_size屏幕大小varchar(32)可空單位:英寸screen_material屏幕材質(zhì)varchar(100)可空rear_camera后置攝像頭text可空front_camera前置攝像頭text可空speakervibrating_motortouch_idface_idnfcwired_chargingwireless_charginginterfacescreen_typephone_typephone_image揚(yáng)聲器振動馬達(dá)指紋識別面部識別nfc有線充電無線充電機(jī)身接口屏幕類型手機(jī)類型手機(jī)圖像varchar(100)varchar(100)varchar(100)varchar(100)varchar(200)varchar(100)varchar(100)varchar(100)texttextvarchar(100)可空可空可空可空可空可空可空可空可空非空非空必填相對路徑,默認(rèn)指向暫無信息的圖片產(chǎn)品信息表(Phone)如REF_Ref37949463\h表32所示,保存了所有產(chǎn)品的參數(shù)信息,將品牌獨(dú)立成為另外一個(gè)表以方便在數(shù)據(jù)庫層級加速品牌的檢索條件。表STYLEREF1\s3SEQ表\*ARABIC\s13評論信息表:PhoneComment屬性名名稱類型是否允許為空備注id編號bigint(20)非空自增,主鍵content內(nèi)容varchar(50)非空create_timeauthor_idphone_id創(chuàng)建時(shí)間作者產(chǎn)品varchar(50)int(11)int(11)非空非空非空自動獲取系統(tǒng)時(shí)間User表,外鍵Phone表,外鍵評論信息表(PhoneComment)如REF_Ref37949481\h表33所示,用于保存登錄用戶在產(chǎn)品詳情頁下發(fā)表的評論信息。表STYLEREF1\s3SEQ表\*ARABIC\s14品牌信息表:Brand屬性名名稱類型是否允許為空備注id編號bigint(20)非空自增,主鍵name品牌名稱varchar(50)非空品牌信息表(Brand)如REF_Ref37949548\h表34所示,用于保存所有產(chǎn)品的品牌,為了加速以及方便小程序端較為常用的品牌檢索而創(chuàng)建。關(guān)鍵技術(shù)分析系統(tǒng)開發(fā)及測試的運(yùn)行環(huán)境開發(fā)系統(tǒng):Windows11。開發(fā)工具:Pycharm、VSCode、微信開發(fā)者工具后臺測試環(huán)境:Windows11(Edge)、macOSMonterey(Chrome)。微信小程序測試環(huán)境:Windows11(開發(fā)者工具)、HarmonyOS2.0.0(微信8.0.21)、iOS15.3.1(微信8.0.20)系統(tǒng)架構(gòu):Django+MySQL+DRF+小程序MINA。系統(tǒng)相關(guān)技術(shù)介紹requests及BeautifulSouprequests庫是Python中用于網(wǎng)絡(luò)請求方面的庫,用于模擬用戶訪問并獲得對應(yīng)url網(wǎng)址頁面中的html或者json等數(shù)據(jù),使用簡單、高效、便捷。BeautifulSoup庫是一個(gè)可以解析html或者xml文檔的Python庫,提取完成后可以通過Python語言中利用html選擇器的方式獲取想要的數(shù)據(jù),大大降低了從復(fù)雜的html頁面中提取數(shù)據(jù)的難度,方便了數(shù)據(jù)的獲取。DjangoDjango是一個(gè)以Python為開發(fā)語言的開源Web框架。在遵循傳統(tǒng)JavaWeb等MVC框架的基礎(chǔ)上,其采用了MTV的開發(fā)模式,即模型(數(shù)據(jù)層),模板(表現(xiàn)層),視圖(業(yè)務(wù)層)。其中,在模型層,Django采用了ORM模型,即對象-關(guān)系映射模型。通過在model中建立對象即可輕松建表,同時(shí),也提供了大量的增刪改查的方法,對應(yīng)的方法能夠自動地將對應(yīng)操作轉(zhuǎn)化為對應(yīng)的SQL語句。通過ORM模型,我們可以非常簡單的對后臺數(shù)據(jù)庫執(zhí)行操作,而不用自己書寫復(fù)雜的SQL語句,降低了開發(fā)的負(fù)擔(dān)。Django還有一個(gè)名為DjangoRESTframework(DRF)的一個(gè)RESTful風(fēng)格API框架,利用這個(gè)框架可以方便地打通小程序后Django后臺的數(shù)據(jù)交互問題,實(shí)現(xiàn)前后端分離,為以后的開發(fā)維護(hù)留下了大量的空間。MySQLDjango中的默認(rèn)數(shù)據(jù)庫為SQLLite3,其實(shí)在本項(xiàng)目中已經(jīng)足夠使用了,但是為了后續(xù)遷移的方便,在本項(xiàng)目中還是采用了MySQL作為數(shù)據(jù)存儲的工具。MySQL是Oracle公司旗下當(dāng)前最流行的關(guān)系型數(shù)據(jù)庫之一,從MySQL5.5版本以后,默認(rèn)支持InnoDB引擎,支持了ACID事務(wù),也支持索引。同時(shí),MySQL是一個(gè)開源數(shù)據(jù)庫,因此成為了很多人的數(shù)據(jù)庫的首選。微信小程序MINA框架MINA是微信官方提供的開發(fā)框架,通過微信官方開發(fā)者工具,可以看到每個(gè)界面都是一個(gè)page,共有四種類型的文件,分別為js文件,用于實(shí)現(xiàn)業(yè)務(wù)的邏輯;wxml文件,用于實(shí)現(xiàn)頁面的渲染;wxss文件,用于控制渲染的樣式;json文件,用于配置當(dāng)前頁面的組件。通過在js中利用官方提供的wx.request方法,可以得到類似ajax的數(shù)據(jù)交互體驗(yàn),獲取api中獲取到的數(shù)據(jù),用于前端渲染。整體得到了一個(gè)類似于h5的開發(fā)體驗(yàn),易于上手。系統(tǒng)關(guān)鍵技術(shù)介紹數(shù)據(jù)獲取與預(yù)處理在系統(tǒng)上線運(yùn)行之前,首先要獲取足夠多的產(chǎn)品數(shù)據(jù),并將其導(dǎo)入數(shù)據(jù)庫,總體流程如REF_Ref100416037\r\h圖4-1所示。數(shù)據(jù)獲取與預(yù)處理流程圖訪問中關(guān)村在線首頁可以查看所有手機(jī)的列表信息,為了獲取更多參數(shù),需要在首頁第一次進(jìn)行數(shù)據(jù)爬蟲,獲取所有產(chǎn)品的具體參數(shù)所在的url地址。核心代碼如下所示:def
get_res(url):
try:
r
=
requests.get(url,
headers=hd)
r.encoding
=
r.apparent_encoding
demo
=
r.text
return
demo
except:
print('connection
error')
time.sleep(10)
get_res(url)
whd
=
''
hf_list
=
[]
for
num
in
range(1,
33):
#
total
33
pages
of
list
url
=
'/cell_phone_index/subcate57_0_list_1_0_4_1_0_{}.html'.format(num)
soup
=
BeautifulSoup(get_res(url),
'html.parser')
cs_tag
=
soup.select(
'body
>
div.wrapper.clearfix
>
div.content
>
div.list-box
>
div
>
-intro
>
ul
>
li:nth-child(8)
>
a')
for
web
in
cs_tag:
hf
=
whd
+
web['href']
hf_list.append(hf)
print(num)
df
=
pd.DataFrame({'cs_href':
hf_list})
獲取到所有產(chǎn)品參數(shù)的url鏈接后,進(jìn)行第二次數(shù)據(jù)爬蟲,對每個(gè)界面的數(shù)據(jù)進(jìn)行獲取并記錄。關(guān)鍵代碼如下所示:cnt
=
1
for
url
in
urllist:
soup
=
BeautifulSoup(get_res(url),
'html.parser')
name_tag
=
soup.select('body
>
duct-model.title.clearfix
>
h1')
brand_tag
=
soup.select('#_j_breadcrumb')
print(name_tag[0].get_text())
print(brand_tag[0].get_text())
dict
=
{}
dict['產(chǎn)品名']
=
name_tag[0].get_text()
dict['品牌']
=
brand_tag[0].get_text()
for
i
in
range(0,
100):
csn_tag
=
soup.select('#newPmName_{}'.format(i))
csd_tag
=
soup.select('#newPmVal_{}'.format(i))
if
len(csn_tag)
==
0:
continue
for
csn,
csd
in
zip(csn_tag,
csd_tag):
dict[csn.get_text()]
=
csd.get_text()
ndf
=
pd.DataFrame(dict,
index=[1])
df
=
df.append(ndf,
ignore_index=True)
print(cnt)
print(df)
cnt
+=
1
print(df)
獲取到參數(shù)數(shù)據(jù)后,顯然存在大量數(shù)據(jù)并不符合我們的要求,所以要進(jìn)行數(shù)據(jù)處理的工作以得到規(guī)格化的數(shù)據(jù),這里采用正則匹配的方式清除干擾,同時(shí)對不符合要求的數(shù)據(jù)進(jìn)行刪除。這里展示部分字段的處理邏輯:data["產(chǎn)品名"]
=
data["產(chǎn)品名"].str.replace(r"參數(shù)$",
"")
data["CPU型號"]
=
data["CPU型號"].str.replace(r"手機(jī)性能排行>$",
"")
data["CPU型號"]
=
data["CPU型號"].str.replace(r"更多.*$",
"")
data["電商報(bào)價(jià)"]
=
data["電商報(bào)價(jià)"].str.replace(r"^.*?¥.*?(?=¥.*)",
"")
data["電商報(bào)價(jià)"]
=
data["電商報(bào)價(jià)"].str.replace(r"^.*?¥.*?(?=¥.*)",
"")
data
=
data[~data['電商報(bào)價(jià)'].isin(['預(yù)約搶購'])]
data["電商報(bào)價(jià)"]
=
data["電商報(bào)價(jià)"].str.replace(r"^¥",
"")
data["分辨率"]
=
data["分辨率"].str.replace(r"像素.*$",
"")
管理員后臺系統(tǒng)管理員后臺系統(tǒng)由完整的Django框架完成,前端展示采用DjangoTemplate完成,前后端融合開發(fā)。管理員對產(chǎn)品數(shù)據(jù)進(jìn)行增刪改查的業(yè)務(wù)流程圖如REF_Ref100420614\r\h圖4-2所示。管理員后臺流程圖數(shù)據(jù)庫建立完成以后,將REF_Ref100428735\r\h4.3.1中最后所得的規(guī)格化數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)庫。由于數(shù)據(jù)量較大,因此在產(chǎn)品列表頁加入了搜索和分頁的功能。核心代碼如下。@login_required(login_url='/phone/login/')
#
未登錄重定向回登錄界面
def
phone_list_view(request):
search_word
=
request.GET.get('search',
None)
all_phones
=
Phone.objects.all().order_by("id")
if
search_word:
all_phones
=
Phone.objects.filter(Q(name__icontains=search_word)|
Q(phone_type__icontains=search_word)|
Q(brand__name__icontains=search_word)).order_by("id")
if
not
all_phones:
return
redirect("phone_home")
current_pagnum
=
request.GET.get('page',
'1')
paginator
=
Paginator(all_phones,
9)
#
Django
官方分頁工具
current_phones
=
paginator.page(number=current_pagnum)
return
render(request,
'phone/phone_home.html',
{
'current_phones':
current_phones,
'num_pages':
paginator.num_pages,
'search_word':
search_word,
'current_count':
paginator.count,
'current_page':
current_pagnum,
})
其余后臺部分代碼受篇幅限制,本文不做過多展示,可以在附件中進(jìn)行查看。用戶微信小程序系統(tǒng)基于微信小程序的框架以及開發(fā)限制,這里采用了前后端分離的方案,并沒有采用微信小程序提供的云數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲,而是選擇了調(diào)用本地的MySQL數(shù)據(jù)庫。后期若有需要真正投入使用僅需將后臺Django程序在遠(yuǎn)程服務(wù)器上運(yùn)行,然后在小程序的全局變量中更改對應(yīng)的服務(wù)器IP地址即可直接投入使用。普通用戶端小程序的添加評論業(yè)務(wù)流程如REF_Ref100419434\r\h圖4-3所示,微信小程序添加評論流程圖在產(chǎn)品詳情頁點(diǎn)擊添加評論的按鈕后會根據(jù)登錄情況進(jìn)行分界面的跳轉(zhuǎn),業(yè)務(wù)邏輯代碼實(shí)現(xiàn)如下所示:bindAddComment:
function
(e)
{
if(!this.data.hasUserInfo){
wx.navigateTo({
url:
'/pages/login/login',
})
}else{
console.log('/pages/comment/comment?phone='
+
this.data.phone_
+
"&userid="
+
this.data.userInfo.userid)
wx.navigateTo({
url:
'/pages/comment/comment?phone='
+
this.data.phone_
+
"&userid="
+
this.data.userInfo.userid,
})
}
},
由于微信小程序沒有session機(jī)制,為了判斷當(dāng)前用戶的登錄狀態(tài),需要調(diào)用微信小程序的本地存儲能力,在用戶登錄完成后,將用戶信息寫入本地存儲,每次小程序啟動時(shí),都將從本地存儲中讀取相應(yīng)的數(shù)據(jù)。若能夠讀取到,則說明當(dāng)前為登錄狀態(tài),若未能獲取對應(yīng)字段,說明當(dāng)前狀態(tài)未登錄,當(dāng)前用戶身份為游客。登錄的核心業(yè)務(wù)邏輯如下所示:formSubmit:
function
(e)
{
console.log(e.detail.value)
var
dataInfo
=
e.detail.value
if
(!dataInfo.username
||
!dataInfo.password)
{
wx.showToast({
title:
'用戶名或密碼為空!',
icon:
'none'
})
return;
}
wx.request({
url:
app.globalData.serverIp
+
'api/wxlogin/',
data:
{
"username":
dataInfo.username,
"password":
dataInfo.password
},
method:
"POST",
success:
(result)
=>
{
console.log("success")
if
(!result.data.status)
{
wx.showToast({
title:
result.data.error_message,
icon:
'none'
})
return;
}
wx.showToast({
title:
"登錄成功!",
icon:
'none'
})
app.globalData.currentUserInfo
=
{
"userid":
result.data.userid,
"username":
dataInfo.username
}
wx.setStorageSync('userinfo',
{
"userid":
result.data.userid,
"username":
dataInfo.username
})
wx.navigateBack()
},
fail:
(res)
=>
{
console.log("fail")
},
complete:
(res)
=>
{
},
})
},
在全局的app.js文件的onLaunch方法中,加入如下代碼,即可實(shí)現(xiàn)打開小程序時(shí)的登錄情況判斷,將用戶信息讀入內(nèi)存,加速各個(gè)環(huán)節(jié)的判斷,避免反復(fù)調(diào)用存儲造成系統(tǒng)性能降低。const
currentUser
=
wx.getStorageSync('userinfo')
||
null
this.globalData.currentUserInfo
=
currentUser
為了提高用戶在選擇產(chǎn)品時(shí)的選擇效率,因此構(gòu)建了一個(gè)二級菜單。一級菜單的內(nèi)容為所有產(chǎn)品的品牌。在進(jìn)入產(chǎn)品對比的選擇界面時(shí),小程序端會向后臺發(fā)送請求,得到品牌-產(chǎn)品的json數(shù)據(jù)。選擇品牌后,二級菜單將會自動切換為此品牌的所有產(chǎn)品,方便用戶篩選。實(shí)現(xiàn)的關(guān)鍵代碼如下如下:bindMultiPickerChangeA:
function
(e)
{
var
result
=
e.detail.value;
(result);
this.setData({
is_selectedA:
true,
infoA:
this.data.sourceFourth[result[0]].children[result[1]]
})
},
removeA:
function
(e)
{
console.log("removeA")
this.setData({
is_selectedA:
false
})
},
//選擇列變更時(shí),處理下級數(shù)組變更
bindMultiPickerColumnChange:
function
(e)
{
var
column
=
e.detail.column;
var
index
=
e.detail.value;
var
array
=
this.data.arrayFourth;
if
(column
==
0)
{
array[1]
=
array[column][index].children;
this.setData({
arrayFourth:
array
});
}
else
if
(column
==
1)
{
//最后一列不處理
}
},
同時(shí)需要在后端api方面給予數(shù)據(jù)的支持,實(shí)現(xiàn)代碼如下:class
WxGetSelectInfoView(APIView):
def
get(self,
request,
*args,
**kwargs):
brand
=
Brand.objects.all().values_list("name",
flat=True)
all_brands
=
list(brand)
branddict_list
=
[{"name":
item,
"children":
None}
for
item
in
all_brands]
print(branddict_list)
for
name
in
branddict_list:
all_phones
=
Phone.objects.filter(brand=name['name']).values()
name['children']
=
list(all_phones)
print(branddict_list)
return
Response({"status":
True,
"select_dict":
branddict_list})
其余用戶微信小程序端的實(shí)現(xiàn)代碼部分由于篇幅限制就不在本文中進(jìn)行闡述,可以在附件中進(jìn)行進(jìn)一步的了解。系統(tǒng)功能介紹管理員后臺系統(tǒng)登錄頁在瀏覽器中輸入對應(yīng)的后臺管理網(wǎng)址,若未登錄,所有界面都會被重定向到登錄界面,管理員只有通過登錄Django超級用戶之后方可進(jìn)入后臺管理界面。登錄頁面如REF_Ref100427170\r\h圖5-1所示:后臺管理員登錄界面產(chǎn)品列表頁登錄完成后,系統(tǒng)將會自動跳轉(zhuǎn)到產(chǎn)品列表頁,如REF_Ref100427842\r\h圖5-2所示。產(chǎn)品列表頁上方搜索按鈕集合了品牌、產(chǎn)品名、手機(jī)類型三個(gè)字段的模糊搜索,例如:搜索“華為”即可出現(xiàn)如REF_Ref100428461\r\h圖5-3所示的結(jié)果。搜索結(jié)果列表頁列表頁底部含有分頁功能,如REF_Ref100428554\r\h圖5-4所示。列表頁底部的分頁新增產(chǎn)品如果資訊網(wǎng)站的數(shù)據(jù)更新不大,管理員也可以不需要再運(yùn)行爬蟲更新數(shù)據(jù),可以的點(diǎn)擊上方新增產(chǎn)品的按鈕即可實(shí)現(xiàn)手動新增單個(gè)產(chǎn)品的內(nèi)容,部分界面如REF_Ref100429776\r\h圖5-5所示新增產(chǎn)品產(chǎn)品詳情界面在產(chǎn)品列表界面點(diǎn)擊查看產(chǎn)品詳情的按鈕即可跳轉(zhuǎn)到對應(yīng)的產(chǎn)品詳情界面,如REF_Ref100429924\r\h圖5-6所示。產(chǎn)品詳情界面刪除手機(jī)在產(chǎn)品詳情界面點(diǎn)擊刪除手機(jī)的按鈕之后,會彈出二次確認(rèn)框,點(diǎn)擊確認(rèn)即可刪除該產(chǎn)品并返回列表頁,如REF_Ref100430462\r\h圖5-7所示。刪除確認(rèn)框編輯參數(shù)點(diǎn)擊編輯參數(shù)即可跳轉(zhuǎn)到產(chǎn)品編輯的界面,界面風(fēng)格和REF_Ref100430542\r\h圖5-5新增產(chǎn)品界面相同,但是可以自動填充當(dāng)前產(chǎn)品的信息。用戶微信小程序數(shù)據(jù)平臺產(chǎn)品列表頁打開小程序后將自動展示所有產(chǎn)品的列表,并按照品牌分類。如REF_Ref100431263\r\h圖5-8所示。小程序產(chǎn)品列表頁點(diǎn)擊左側(cè)品牌標(biāo)簽即可切換右側(cè)手機(jī)信息,如REF_Ref100431516\r\h圖5-9所示。切換左側(cè)品牌產(chǎn)品詳情頁點(diǎn)擊右側(cè)任意產(chǎn)品即可進(jìn)入該產(chǎn)品的詳情頁,如REF_Ref100431674\r\h圖5-10所示。產(chǎn)品詳情頁產(chǎn)品評論將產(chǎn)品詳情頁拉到底部,即可查看當(dāng)前產(chǎn)品的所有評論。如REF_Ref100431965\r\h圖5-11所示。產(chǎn)品評論點(diǎn)擊最下方評論,若當(dāng)前用戶已登錄,會跳轉(zhuǎn)到添加評論的界面,如REF_Ref100432168\r\h圖5-12所示。添加產(chǎn)品評論輸入內(nèi)容并點(diǎn)擊提交后即可返回產(chǎn)品詳情頁,并展示最新的評論。如REF_Ref100432277\r\h圖5-13所示。測試添加評論若點(diǎn)擊添加評論時(shí)當(dāng)前用戶并未登錄,將會自動跳轉(zhuǎn)到登錄界面,如REF_Ref100434265\r\h圖5-14所示。用戶登錄界面產(chǎn)品對比點(diǎn)擊下方tabbar中的對比按鈕即可進(jìn)入產(chǎn)品對比的選擇界面,如REF_Ref100432511\r\h圖5-15所示。產(chǎn)品對比選擇分別點(diǎn)擊兩個(gè)按鈕,將會分別彈出二級選擇菜單,如REF_Ref100432629\r\h圖5-16所示。二級選擇菜單選擇完畢兩個(gè)產(chǎn)品以后,將會出現(xiàn)開始對比的按鈕,如REF_Ref100432745\r\h圖5-17所示。選擇完畢后出現(xiàn)按鈕點(diǎn)擊開始對比按鈕,即可進(jìn)入產(chǎn)品對比詳情界面,如REF_Ref100432829\r\h圖5-18所示。產(chǎn)品對比詳情產(chǎn)品信息排行返回主頁,點(diǎn)擊下方排行按鈕,即可查看所有手機(jī)按照價(jià)格、屏幕尺寸等信息的升序排行以及降序排行結(jié)果,以價(jià)格降序排行為例,如REF_Ref100432973\r\h圖5-19所示。價(jià)格排行降序個(gè)人信息管理若當(dāng)前用戶為游客,即未登錄狀態(tài),點(diǎn)擊tabbar中的“我的”模塊,會顯示登錄和注冊兩個(gè)選項(xiàng)。點(diǎn)擊注冊按鈕,輸入賬號以及兩遍密碼之后,符合用戶名唯一以及兩次密碼相同的條件后即可實(shí)現(xiàn)注冊,如REF_Ref100434058\r\h圖5-20所示。注冊界面同樣點(diǎn)擊登錄按鈕即可進(jìn)入登錄界面,界面和點(diǎn)擊評論時(shí)的按鈕相同,如REF_Ref100434265\r\h圖5-14所示。結(jié)語系統(tǒng)總體評價(jià)本系統(tǒng)包含了后臺管理員UI界面,增刪改查的模塊。前臺用戶數(shù)據(jù)展示平臺,微信小程序的界面,對程序員來說做到了開發(fā)方便、便于維護(hù)、模塊可擴(kuò)展。對用戶來說做到了功能豐富、體驗(yàn)流暢。通過集合中關(guān)村在線網(wǎng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鹽城江蘇南京師范大學(xué)鹽城高級中學(xué)面向區(qū)外選調(diào)教師10人筆試歷年參考題庫附帶答案詳解
- 溫州浙江溫州市龍灣郵政管理局招聘編外工作人員筆試歷年參考題庫附帶答案詳解
- 江西2025年江西省檢驗(yàn)檢測認(rèn)證總院招聘49人筆試歷年參考題庫附帶答案詳解
- 昆明云南昆明醫(yī)科大學(xué)第一附屬醫(yī)院昆醫(yī)大附一院招聘科研助理人員筆試歷年參考題庫附帶答案詳解
- 恩施2025年湖北恩施鶴峰縣教育系統(tǒng)選調(diào)工作人員筆試歷年參考題庫附帶答案詳解
- 廣東2025年廣東省應(yīng)急管理廳所屬事業(yè)單位招聘博士研究生(第二批)8人筆試歷年參考題庫附帶答案詳解
- 宜賓2025年四川宜賓屏山縣招用幼兒園合同制教師40人筆試歷年參考題庫附帶答案詳解
- 臺州浙江臺州椒江區(qū)紀(jì)委區(qū)監(jiān)委機(jī)關(guān)下屬事業(yè)單位面向全市選聘工作人員筆試歷年參考題庫附帶答案詳解
- 內(nèi)蒙古2025年內(nèi)蒙古地質(zhì)調(diào)查研究院招聘13人筆試歷年參考題庫附帶答案詳解
- 耳科患者聽力保護(hù)的臨床隨訪管理規(guī)范
- 62個(gè)重大事故隱患判定標(biāo)準(zhǔn)匯編(2025版)
- GB/T 10810.1-2025眼鏡鏡片第1部分:單焦和多焦
- 小學(xué)校本課程教材《足球》
- 高中語文課內(nèi)寫作素材積累:“經(jīng)典課文+古代詩人”高考語文作文備考總復(fù)習(xí)
- 高效節(jié)水灌溉概述課件培訓(xùn)課件
- 風(fēng)險(xiǎn)管理顧問協(xié)議
- 一年級下冊字帖筆順
- 2024年高考語文閱讀之馬爾克斯小說專練(解析版)
- 中國石油天然氣集團(tuán)有限公司投標(biāo)人失信行為管理辦法(試行)
- 復(fù)方蒲公英注射液與復(fù)發(fā)性泌尿系統(tǒng)感染的關(guān)聯(lián)
- 鐵路電話區(qū)號-鐵路專網(wǎng)區(qū)號-鐵路電話普通電話互打方法
評論
0/150
提交評論